Python에서 딕셔너리는 데이터를 저장하고 검색하는 데 자주 사용되는 유용한 자료 구조이다. Python은 표준 딕셔너리 {} 외에도 collections 모듈을 통해 defaultdict를 제공한다. 이 두 딕셔너리의 주된 차이점은 존재하지 않는 키에 대한 접근 방식에 있다.
일반 딕셔너리는 가장 기본적인 형태의 딕셔너리.
키-값 쌍: 모든 키-값 쌍을 저장하며, 각 키는 고유해야 한다.
키 접근: 존재하는 키에 접근하면 해당 값을 반환한다. 그러나 존재하지 않는 키에 접근하려고 하면 KeyError 예외가 발생한다.
사용 예시:
my_dict = {'apple': 5, 'banana': 3}
print(my_dict['apple']) # 5 출력
print(my_dict['cherry']) # KeyError 발생
defaultdict는 collections 모듈에서 제공하는 특별한 딕셔너리 타입이다.
기본값 생성기: defaultdict는 키-값 쌍을 저장하는 동시에 존재하지 않는 키에 대한 기본값 생성기(default factory)를 설정할 수 있다.
키 접근: 존재하지 않는 키에 접근할 때, 설정된 기본값 생성기를 통해 기본값을 자동으로 생성하고 반환한다. 이로 인해 KeyError 예외가 발생하지 않는다.
from collections import defaultdict
my_defaultdict = defaultdict(int) # 기본값 0을 가지는 정수
print(my_defaultdict['apple']) # 키가 존재하지 않으므로 기본값 0 반환
자동으로 기본값을 생성해야 하는 상황에서는 defaultdict가 매우 유용하다. 이는 특히 존재하지 않는 키에 대해 기본값을 미리 정해두어야 할 때 효과적이다. 반면, 존재하지 않는 키에 접근할 일이 없으면 일반 딕셔너리가 더 적절할 수 있다