딕셔너리는 해시 가능한 키를 값에 연결하고, 집합은 중복 없는 키를 저장한다. Python 3.7부터 dict의 삽입 순서는 언어 사양으로 보장된다.

piece_value = {"차": 130, "포": 70}
piece_value.setdefault("마", 50)

for piece, value in piece_value.items():
    print(piece, value)

없는 키를 `d[key]`로 읽으면 KeyError가 난다. 없음이 정상이라면 `get`, 반드시 있어야 한다면 대괄호를 쓴다. 이 선택은 오류를 숨길지 드러낼지의 차이다.

집합의 `|`, `&`, `-`는 합집합, 교집합, 차집합이다. 포함 검사는 평균적으로 빠르다. 중복 제거 뒤 순서를 유지하려면 `list(dict.fromkeys(values))`를 쓸 수 있다.

딕셔너리를 순회하면서 크기를 바꾸면 RuntimeError가 난다. `list(d)`로 키 스냅샷을 만들거나 새 딕셔너리를 만든다.

Python 8. 딕셔너리와 집합의 핵심 흐름도
그림. 딕셔너리와 집합의 키는 저장 중 해시가 바뀌지 않아야 한다.