Python 딕셔너리 기본값 처리 패턴 정리

배경

외부 API 응답을 파싱하는 코드를 작성하다가 선택적 필드 처리 때문에 try-except 블록이 과도하게 많아졌다. 딕셔너리 기본값 처리 방법을 정리해둔다.

방법 비교

1. get() 메서드

가장 간단한 방법. 키가 없을 때 None 또는 지정한 기본값을 반환한다.

user_data = response.json()
age = user_data.get('age', 0)
email = user_data.get('email')  # None 반환

읽기 전용으로 사용할 때 적합하다.

2. setdefault()

키가 없으면 기본값을 설정하고 반환한다. 원본 딕셔너리를 수정한다는 점이 get()과 다르다.

config = {}
config.setdefault('timeout', 30)  # config에 'timeout': 30 추가됨
config.setdefault('timeout', 60)  # 이미 있으므로 30 반환

설정 값을 누적할 때 유용했다.

3. collections.defaultdict

키 접근 시 자동으로 기본값을 생성한다. 카운팅이나 그룹핑 작업에 효과적이다.

from collections import defaultdict

# 단어 빈도 카운팅
word_count = defaultdict(int)
for word in words:
    word_count[word] += 1  # KeyError 걱정 없음

# 그룹핑
user_by_age = defaultdict(list)
for user in users:
    user_by_age[user['age']].append(user)

선택 기준

  • 단순 조회: get()
  • 조회 + 저장: setdefault()
  • 반복적 집계/그룹핑: defaultdict

로그 집계 스크립트에서 defaultdict로 바꾸니 코드가 30줄 정도 줄어들었다. 상황에 맞는 도구를 쓰는 게 중요하다.