defaultdict는 「존재하지 않는 키에 접근하면 자동으로 기본값을 만들어 주는」 특수 딕셔너리입니다.
일반 딕셔너리에서 「키가 없으면 KeyError」를 피하기 위한 if 문이 사라져 코드가 간결해집니다.
기본 사용.
from collections import defaultdict.
d = defaultdict(list) — 기본값이 빈 리스트.
d["사과"].append(1) — 키 「사과」가 없으면 자동으로 빈 리스트가 생기고 1이 추가됨.
일반 딕셔너리라면 「if 키 없으면 빈 리스트 만들고 추가」를 직접 써야 합니다.
기본값 종류는 다양합니다.
defaultdict(int) — 기본값 0(빈도 세기).
defaultdict(set) — 기본값 빈 집합.
defaultdict(list) — 기본값 빈 리스트.
defaultdict(lambda: "기본값") — 람다로 임의 기본값.
활용 예시 — 그룹화.
students = [("수학", "홍길동"), ("수학", "김철수"), ("영어", "이영희")].
by_subject = defaultdict(list).
for subject, name in students: by_subject[subject].append(name).
결과: {"수학": ["홍길동", "김철수"], "영어": ["이영희"]}.
비유하자면 defaultdict는 「자판기에 새 메뉴 버튼을 누르면 자동으로 빈 컵이 준비되는」 친절함과 같습니다.
빈 컵을 직접 챙길 필요가 없으니 음료를 따르는 일에만 집중하면 됩니다.
그룹화·빈도 세기·인덱싱 같은 패턴에서 거의 모든 코드가 간결해집니다.
한 줄 요약
defaultdict는 키 없을 때 자동으로 기본값을 만들어 주는 딕셔너리로, 그룹화·빈도 세기에서 if 검사를 없애 코드를 간결하게 만들어 줍니다.
더 알아볼 것
- dict.setdefault와 비교
- defaultdict의 함정 — 의도하지 않은 키 생성
- Counter는 defaultdict(int)의 특수 형태