선언

d = {}
d = {"a": 1, "b": 2}
d = dict(a=1, b=2)
d = dict([("a", 1), ("b", 2)])
 
for i in range(len(genres)):
        data.append({
            "genre": genres[i],
            "play": plays[i],
            "index": i
        })

값 접근

d["a"]
d.get("a")
d.get("missing", 0)  # default 값 반환

코테에서는 .get(key, default) 사용이 매우 많다. KeyError 방지.

추가 / 수정

d["c"] = 100          # 추가
d["a"] = 999          # 수정
d.update({"x": 1})    # 여러 값 업데이트
d.update(y=2, z=3)    # 키워드 기반 업데이트

삭제

del d["a"]
d.pop("b")            # 반환값 포함
d.pop("missing", None)  # 안전 pop (default 지정)
d.clear()             # 전체 삭제

key / value / item 반복

for k in d.keys():
    pass
 
for v in d.values():
    pass
 
for k, v in d.items():
    pass

set 사용 (특정 조건으로 중복 제거)

data = [ {'id': 1, 'name': 'A'}, {'id': 2, 'name': 'B'}, {'id': 1, 'name': 'C'} ] 
# id 기준 중복 제거 
seen = set() 
result = [] 
for item in data: 
	if item['id'] not in seen: 
		seen.add(item['id']) 
		result.append(item)
# [{'id': 1, 'name': 'A'}, {'id': 2, 'name': 'B'}]

개수 세기 (Counter 활용)

collections.Counter“원소 개수를 세는 데 특화된 딕셔너리”

from collections import Counter
 
cnt = Counter(arr)
cnt["a"]      # 개수 조회
cnt.most_common(1)  # 최빈값

정렬 (key/value 기준 정렬)

# d.items()는 딕셔너리의 (key, value) 쌍을 튜플 형태로 반환하는 객체
sorted_items = sorted(d.items(), key=lambda x: x[1])       # value 오름차순
sorted_items = sorted(d.items(), key=lambda x: -x[1])      # value 내림차순
sorted_items = sorted(d.items(), key=lambda x: (x[1], x[0]))  # 복합 정렬
 
data_sorted = sorted(data, key = lambda x : (x["genre"], x["play"], x["index"]))

존재 여부 체크

if "a" in d:
    pass
 
if "missing" not in d:
    pass

기본 패턴(코딩테스트에서 매우 자주 등장)

default dict처럼 사용하기

d[key] = d.get(key, 0) + 1

문자열/빈도 문제에서 거의 필수 패턴.

값이 리스트인 딕셔너리

d = {}
d.setdefault(key, []).append(value)

defaultdict 사용 (키 자동 생성)

from collections import defaultdict
 
d = defaultdict(int)         # int → 기본값 0
d2 = defaultdict(list)       # list → 자동으로 빈 리스트 생성
d3 = defaultdict(lambda: 5)  # 기본값 5

딕셔너리 컴프리헨션

d = {x: x*x for x in range(5)}

딕셔너리 뒤집기

rev = {v: k for k, v in d.items()}

두 딕셔너리 병합 (Python 3.9+)

merged = d1 | d2

Key 기준 정렬된 딕셔너리 만들기

sorted_dict = dict(sorted(d.items()))