해시 자료구조에서는 insert, erase, find, update 등 모든 연산이 전부 O(1)이다
해시 함수란, 임의 길이의 데이터를 고정된 길이의 데이터로 대응시키는 함수로
예를 들면 카드 번호의 경우 뒷 4자리만 인덱스로 사용하는 것이 효율적이다
서로 다른 키가, 같은 해시 값을 가지게 될 경우
ex) 카드 번호 뒷 4자리는 같지만, 나머지 자리가 다른 카드들
각 인덱스마다 연결 리스트를 하나씩 두고, 삽입이 발생하면 해당하는 인덱스의 연결 리스트에 값을 추가함
각 인덱스에 바로 (키, 값) 쌍을 씀
Cluster가 커지면 커질수록 인덱스가 이 군집에 걸렸을 때 빈 칸을 찾을 때까지 이동해야 하는 횟수가 늘어나서 성능을 저하시키게 됨
dic = {'김정빈': 75, '박한지': 56, '임호정': 23}
del dic['박한지']
a = {'banana': 1500, 'watermelon': 9000}
a.get('banana') -> 1500
a.get('strawberry', 0) -> 0
print(list(a.values())) # 딕셔너리의 값만 모아 리스트로 출력
# 반복문으로 키-값 쌍 모두 출력하기
for key, value in x.items():
print(key, value)
최댓값/최솟값 찾기
# key들 중에 최대/최소 값을 찾아서 리턴
max(dict.keys())
# value들 중에 최대/최소 값을 찾아서 리턴
max(dict.values())
arr = list(zip(dic.keys(), dic.values())) # [(1, 2), (3, 4)] 형태
arr = list(sum(arr, ()) # [1, 2, 3, 4] 형태 -> 완성!
키가 존재하지 않으면, 해당 키를 만들고 값을 디폴트값으로 넣음
from collections import defaultdict
dic = defaultdict(int) # 디폴트값이 int(0)인 딕셔너리
dic = defaultdict(list) # 디폴트값이 리스트([])인 딕셔너리