python์ hashable type
๐ int , float , str , tuple , frozenset and NoneType
๋ง์ฝ tuple ์์ ์ค unhashable type์ ์์๊ฐ ์๋ค๋ฉด ํด๋น tuple์ unhashable ์ด๋ค.
>>> t1 = (10, 'A', frozenset([1, 2, 3]))
>>> t2 = (10, 'A', {1, 2, 3})
>>> hash(t1) # OK!
1315572702399614049
>>> hash(t2) # NOT OK!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
set์ hashable type์ ์์๋ง ๋ด์ ์ ์๋ค.
๐ tuple (o) , list(x)
a = set()
a.add((1, 2))
print(a) # {(1, 2)}
set์ list๋ฅผ addํ ์ ์๋ค.
a = set()
a.add([1, 2])
์๋ฌ ๋ฐ์
Traceback (most recent call last):
File "C:\Users\guswn\PycharmProjects\Algorithm\interview.py", line 347, in <module>
a.add([1, 2])
TypeError: unhashable type: 'list'
Set elements as well as dictionary keys have to be hashable
๐ set์ ์์๋ฟ๋ง ์๋๋ผ dict์ key๊ฐ๋ hashable type์ ๊ฐ์ด ๋ค์ด๊ฐ์ผํ๋ค.
key๊ฐ์ผ๋ก tuple์ด ๊ฐ๋ฅํ๋ค
a = dict()
a[(1, 2)] = 1
print(a) # {(1, 2): 1}
key๊ฐ์ผ๋ก list๋ ์๋๋ค
a = dict()
a[[1, 2]] = 1
์๋ฌ ๋ฐ์
Traceback (most recent call last):
File "C:\Users\guswn\PycharmProjects\Algorithm\interview.py", line 347, in <module>
a[[1,2]] = 1
TypeError: unhashable type: 'list'