[Python] collections 모듈의 defaultdict 메서드

tacowasabii·2024년 6월 13일
0

Python

목록 보기
6/12
post-thumbnail

Python의 collections 모듈에는 defaultdict라는 유용한 자료 구조가 포함되어 있다. defaultdict는 표준 딕셔너리와 비슷하지만, 키가 존재하지 않을 때 기본값을 제공하는 기능을 추가로 제공한다. 이를 통해 코드를 더 간결하고 오류 없이 작성할 수 있다.


1. defaultdict의 기본 사용법

defaultdict를 사용하려면 먼저 collections 모듈에서 이를 가져와야 한다. 기본값을 설정하는 함수나 타입을 인자로 받아, 키가 존재하지 않을 때 이 기본값을 자동으로 생성한다.

from collections import defaultdict

# 기본값이 0인 defaultdict 생성
d = defaultdict(int)
d['apple'] += 1
print(d)
# 출력: defaultdict(<class 'int'>, {'apple': 1})

2. 기본값 설정 방법

기본값을 설정하는 함수나 타입을 defaultdict 생성 시에 지정할 수 있다. 가장 많이 사용되는 몇 가지 예를 살펴보자.

  • 기본값이 0인 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'])  # 출력: ''

3. 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 모듈에서 제공하는 매우 유용한 자료 구조이다. 기본값을 자동으로 생성해 주기 때문에 코드 작성이 더 간결해지고, 키가 존재하지 않을 때 발생하는 오류를 방지할 수 있다. 이를 통해 다양한 상황에서 딕셔너리를 더욱 효과적으로 사용할 수 있다.

profile
웹 프론트엔드 엔지니어

0개의 댓글

관련 채용 정보