본문 바로가기
Algorithm/Dictionary

파이썬 라이브러리 defaultdict

by 이은선 2024. 6. 24.
728x90
SMALL

파이썬에서는 defaultdict라는 편리한 라이브러리를 제공한다. 

 

defaultdict란?

defaultdict는 Python의 collections 모듈에 있는 클래스입니다. 기본 딕셔너리와 비슷하지만, 키가 존재하지 않을 때 KeyError를 발생시키는 대신 자동으로 기본 값을 생성해주는 딕셔너리입니다.

 

dictionary 구현법 (defaultdict 라이브러리 사용 X)

defaultdict를 사용하지 않고 일반 딕셔너리를 사용하여 동일한 작업을 수행할 수 있습니다. 이를 위해서는 키가 존재하지 않을 때 기본값을 수동으로 설정해주어야 합니다.

 

기본값이 int인 경우

d = {}
if 'a' not in d:
	d['a] = 0
d['a'] += 1

if 'b' not in d:
	d['b'] = 0
d['b'] += 2

print(d) # 출력 : {'a': 1, 'b': 2}

 

기본값이 list인 경우

d = {}
if 'a' not in d:
	d['a'] = []
d['a'].append(1)

if 'b' not in d:
	d['b'] = []
d['b'].append(2)

print(d) # 출력 : {'a': [1], 'b': [2]}

 

기본값이 문자열 "N/A"인 경우

d = {}
if 'a' not in d:
	d['a'] = "N/A"

print(d['a']) # 출력 : "N/A"
print(d) # 출력 : {'a': 'N/A'}

 

 

dictionary 구현법 (defaultdict 라이브러리 사용 O)

  1. 기본값 타입을 지정하여 초기화 : defaultdict를 초기화할 때, 기본값으로 사용할 타입을 인자로 전달합니다. 예를 들어, int를 전달하면, 키가 존재하지 않을 때 자동으로 0이 기본값으로 설정됩니다.
  2. 기본값을 설정하는 함수 사용: 타입 대신, 기본값을 반환하는 함수를 인자로 전달할 수도 있습니다.

 

기본적인 사용법

from collections import defaultdict

d = defaultdict(int)
d['a'] += 1
d['b' += 2

print(d) # 출력 : defaultdict(<class 'int'>, {'a': 1, 'b': 2})

 

리스트를 기본값으로 설정

from collections import defaultdict

d = defaultdict(list)
d['a'].append(1)
d['b'].append(2) 

print(d) # 출력 : defaultdict(<class 'list'>, {'a': [1], 'b': [2]})

 

함수를 사용하여 기본값 설정

from collections import defaultdict

d = defaultdict(lambda: "N/A")
print(d['a'])

print(d) # 출력 : defaultdict(<function <lambda> at 0x7f8e5c5d94c0>, {'a': 'N/A'})

 

결론

if문 등의 조건문을 걸어 키가 존재하지 않을 경우에 대한 예외 처리가 필요 없는 경우, 혹은 키가 존재하지 않을 시 기본값을 설정하면 되는 경우에는 defaultdict 라이브러리를 사용하자.

 

728x90
LIST