dict이 매우 강력한 hash table으로 가능하다.
key에 value를 저장하는 구조인 dict이 심지어 엔진이 해쉬테이블로 등록되어있다고 한다.
파이썬의 dict 해쉬 테이블이다.
hash는 고유한 값인데. 중복이 되지 않기 때문에 쉽게 찾아갈 수 있는 것이다.
키 값의 연산 결과에 따라 직접 접근이 가능할 구조
코드를 봅시다.
t1 = (10, 20, (30, 40, 50))
t2 = (10, 20, [30, 40, 50])
print(hash(t1))
print(hash(t2)) # 예외 발생 리스트 떄문에 ㅂ
해쉬 값이 뽑아져있다.
권장되는 dict 방식입니다.
# No use Setdefault
for k, v in source:
if k in new_dict1:
new_dict1[k].append(v)
else:
new_dict1[k] = [v]
print(new_dict1)
# User Setdefault
for k, v in source:
new_dict2.setdefault(k, []).append(v)
print(new_dict2)
{'k1': ['val1', 'val2'], 'k2': ['val3', 'val4', 'val5']}
{'k1': ['val1', 'val2'], 'k2': ['val3', 'val4', 'val5']}
# 주의
new_dict3 = {k: v for k, v in source}
print(new_dict3)
{'k1': 'val2', 'k2': 'val5'}
이런 식으로 했을 경우는 나중 값으로 덮어버림.