Hash Table

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 Setdefault 예제

권장되는 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'}

이런 식으로 했을 경우는 나중 값으로 덮어버림.