Python 딕셔너리 기본값 처리 3가지 방법

문제 상황

외부 API 응답을 파싱하는 코드에서 KeyError가 자주 발생했다. API 문서에는 있지만 실제로는 optional인 필드들이 많았고, 매번 try-except로 감싸기엔 코드가 지저분해졌다.

data = api_response.json()
user_name = data['user']['name']  # KeyError 발생 가능

해결 방법

1. get() 메서드

가장 기본적인 방법. 단순 조회에 적합했다.

user_name = data.get('user', {}).get('name', 'Unknown')
age = data.get('age', 0)

2. setdefault()

값이 없을 때 기본값을 설정하고 반환한다. 딕셔너리를 수정해야 할 때 유용했다.

user_data = {}
user_data.setdefault('visits', 0)
user_data['visits'] += 1

3. collections.defaultdict

여러 키에 대해 같은 타입의 기본값이 필요할 때 사용했다.

from collections import defaultdict

counter = defaultdict(int)
for item in items:
    counter[item] += 1  # KeyError 없이 동작

groups = defaultdict(list)
for user in users:
    groups[user['department']].append(user)

선택 기준

  • 단순 조회: get() 사용
  • 한두 개 키 초기화: setdefault()
  • 반복적인 기본값 패턴: defaultdict

API 파싱 코드는 get()으로, 통계 집계 로직은 defaultdict로 리팩토링했다. KeyError는 거의 사라졌고 코드도 간결해졌다.