호기심 많은 분석가
[Python] TypeError: unhashable type: 'list' 본문
Coding/Machine Learning & Python
[Python] TypeError: unhashable type: 'list'
DA Hun 2021. 6. 5. 23:30리스트 안의 리스트 중 unique 한 것만 남겨두기 위해서 set을 적용해 주었더니 아래와 같은 Error가 발생하였다. 무엇이 문제일까?
TypeError: unhashable type: 'list'
리스트 안의 str 같은 원소들의 경우 별문제가 없다. 그렇다면 list가 unhashable 하다는 것이 무슨 의미인가?
unhashable type: list
hashable
- hashable이라는 것은 어떤 데이터를 hash 함수를 이용해서 hash값으로 변환할 수 있다는 것을 의미
- hash는 어떤 특정 데이터에 대해서, 매우 유니크한 하나의 값을 가지게 된다.
- 그런데 원래 데이터가 변한다면, 이 데이터가 변함에 따라서 해당 hash 값도 변하게 될 것
- 따라서 hashable 하기 위해서는 immutable 해야 한다.
immutability
- immutable 하다는 것은 데이터의 구조가 변경 불가임을 의미한다.
자 이제 그렇다면 무엇이 문제인가? 바로 list는 mutable 한 원소라는 점이다.
- 그래서 list를 immutable 한 tuple의 형태로 바꾸어 주면 해결
arr = [[1, 2], [3, 4], [1, 2]]
tuple_arr = [tuple(i) for i in arr]
print(set(tuple_arr)) # {(1, 2), (3, 4)}
unique_arr = [list(j) in j in set(tuple_arr)]
이렇게 해결하면 우리가 처음에 원하는 작업을 실행해 줄 수 있다. :)
'Coding > Machine Learning & Python' 카테고리의 다른 글
[ML] 다중 회귀 VS 다항 회귀 (Multiple VS Polynomial regression) (0) | 2021.06.07 |
---|---|
[Pandas] Pandas의 map, apply, applymap 함수 (3) | 2021.06.06 |
[Python] for문 상태바 라이브러리 tqdm (2) | 2021.06.05 |
[Python] 로그함수(logarithmic function) np.log1p(z) (0) | 2021.06.03 |
[Python] for문 VS While문 / for문 무한loop (0) | 2021.06.01 |