collections
모듈에서 제공하는 defaultdict
는 파이썬에서 제공하는 딕셔너리 자료구조를 확장한 것임. (defaultdict
는 내장 dict
클래스의 하위 클래스임.)
defaultdict
는 일반 딕셔너리와 비슷하지만, 키가 없는 경우 기본값을 제공할 수 있다는 특징을 가지고 있음.
defaultdict
는 기본값 타입의 인자를 받아서 해당 타입의 기본값을 생성하며, 이 값은 새로운 키에 대한 초기값으로 사용됨.
예를 들어, defaultdict
를 사용하여 아래와 같이 정수 기본값을 가지는 딕셔너리를 생성할 수 있음.
from collections import defaultdict
my_dict = defaultdict(int)
my_dict['apple'] = 5
my_dict['banana'] = 3
print(my_dict['cherry']) # 출력: 0
여기서 int
는 기본값을 0으로 설정한다는 것을 의미함.
즉, 'cherry'
키가 없을 때, my_dict
에서 해당 키를 찾을 수 없으므로 기본값인 0이 반환됨.
defaultdict
는 주로 키가 존재하지 않을 때 초기값을 설정하는 상황에서 사용함.
이러한 특징은 카운팅이나 그룹화 또는 기타 유용한 작업을 수행할 때 유용함.
defaultdict
를 사용하려면 collections
모듈을 임포트해야 함.
위의 코드에서처럼 from collections import defaultdict
와 같이 모듈을 임포트한 다음, defaultdict
객체를 생성할 수 있음.
요약하면, defaultdict
는 일반 딕셔너리와 다르게 키가 없는 경우 기본값을 제공하며, 이를 사용하여 키의 초기값을 설정할 수 있음.
이는 collections
모듈에서 제공되며, 다양한 작업에 유용함.
default_factory
로 사용하여 키-값 쌍의 시퀀스를 리스트 딕셔너리로 그룹화s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
d[k].append(v)
sorted(d.items())
# 출력: [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
default_factory
를 int
로 설정하여 각 키의 개수를 계산하는 방법:
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1
sorted(d.items())
# 출력: [('i', 4), ('m', 1), ('p', 2), ('s', 4)]
default_factory
를 set
으로 설정하여 집합 딕셔너리를 만드는 방법:
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set)
for k, v in s:
d[k].add(v)
sorted(d.items())
# 출력: [('blue', {2, 4}), ('red', {1, 3})]