Python의 collections
모듈에는 defaultdict
라는 유용한 자료 구조가 포함되어 있다. defaultdict
는 표준 딕셔너리와 비슷하지만, 키가 존재하지 않을 때 기본값을 제공하는 기능을 추가로 제공한다. 이를 통해 코드를 더 간결하고 오류 없이 작성할 수 있다.
defaultdict
의 기본 사용법defaultdict
를 사용하려면 먼저 collections
모듈에서 이를 가져와야 한다. 기본값을 설정하는 함수나 타입을 인자로 받아, 키가 존재하지 않을 때 이 기본값을 자동으로 생성한다.
from collections import defaultdict
# 기본값이 0인 defaultdict 생성
d = defaultdict(int)
d['apple'] += 1
print(d)
# 출력: defaultdict(<class 'int'>, {'apple': 1})
기본값을 설정하는 함수나 타입을 defaultdict
생성 시에 지정할 수 있다. 가장 많이 사용되는 몇 가지 예를 살펴보자.
int
타입d = defaultdict(int)
print(d['apple']) # 출력: 0
list
타입d = defaultdict(list)
d['apple'].append('fruit')
print(d)
# 출력: defaultdict(<class 'list'>, {'apple': ['fruit']})
str
타입d = defaultdict(str)
print(d['apple']) # 출력: ''
defaultdict
의 응용 예제defaultdict
는 여러 상황에서 매우 유용하게 사용할 수 있다. 몇 가지 응용 예제를 통해 이를 알아보자.
d = defaultdict(list)
data = [('apple', 1), ('banana', 2), ('apple', 3), ('banana', 4)]
for key, value in data:
d[key].append(value)
print(d)
# 출력: defaultdict(<class 'list'>, {'apple': [1, 3], 'banana': [2, 4]})
d = defaultdict(int)
data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
for item in data:
d[item] += 1
print(d)
# 출력: defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1})
class Counter:
def __init__(self):
self.count = 0
d = defaultdict(Counter)
d['apple'].count += 1
print(d['apple'].count) # 출력: 1
defaultdict
는 Python의 collections
모듈에서 제공하는 매우 유용한 자료 구조이다. 기본값을 자동으로 생성해 주기 때문에 코드 작성이 더 간결해지고, 키가 존재하지 않을 때 발생하는 오류를 방지할 수 있다. 이를 통해 다양한 상황에서 딕셔너리를 더욱 효과적으로 사용할 수 있다.