defaultdict, 기본값이 있는 딕셔너리
Python의 collections 모듈에는 유용한 자료 구조인 defaultdict가 포함되어 있습니다. defaultdict는 기존 딕셔너리와 유사하지만, 존재하지 않는 키에 대해 기본값을 설정할 수 있습니다. defaultdict를 사용하는 장점에 대해서 정리합니다.
defaultdict
defaultdict는 내장 딕셔너리와 동일하지만, 존재하지 않는 키에 대해 기본값을 지정할 수 있습니다. 조금 불편한 점은 기본 라이브러리가 아니라 라이브러리를 추가해야합니다.
특징은 딕셔너리를 생성할 때 기본값을 지정합니다. 만약 존재하지 않는 키에 접근하려고 할 때, 해당 키에 대한 기본값이 반환됩니다.
defaultdict 사용 방법 및 예외처리
defaultdict를 사용하려면 먼저 collections 모듈을 import 해야 합니다. 그런 다음 defaultdict 객체를 생성하고 기본값을 설정합니다. 아래 예시를 통해 사용 방법을 살펴보겠습니다.
Key 예외처리
from collections import defaultdict
# defaultdict 생성
my_dict = defaultdict(int) # int 타입의 기본값을 설정
# 값을 할당하지 않은 키에 접근할 때 기본값인 0이 반환됩니다.
print(my_dict['a']) # 출력: 0
위의 코드는 딕셔너리에 없는 값인 'a'를 참조했습니다. 기본 딕셔너리라면 에러가 출력되지만 defaultdict은 기본값을 반환합니다. 따라서 예외처리를 위한 기본값을 저장해서 예외처리를 편리하게 할 수 있습니다.
딕셔너리 초기화
또 다른 예로 딕셔너리초기화가 있습니다. Frequency Counting이 있습니다.
from collections import defaultdict
text = "apple banana apple orange banana apple"
word_freq = defaultdict(int)
for word in text.split():
word_freq[word] += 1
print(dict(word_freq))
# 출력: {'apple': 3, 'banana': 2, 'orange': 1}
위의 예는 과일이 몇개가 있는 지 저장하는 딕셔너리를 생성하는 예제입니다. 'text'에서 과일이름을 key로 저장하고 과일이름이 발견될 때마다 숫자를 올려줍니다. defaultdict를 사용하면서 딕셔너리 초기화부분이 간단해졌습니다.
defaultdict 초기화
defaultdict 정보는 여러가지 형식으로 초기화할 수 있습니다.
from collections import defaultdict
int_dict = defaultdict(int) # 초기값이 0인 int_dict 생성
int_dict['a'] += 1 # 'a' 키에 1을 더함
print(int_dict) # 출력: defaultdict(<class 'int'>, {'a': 1})
list_dict = defaultdict(list) # 초기값이 빈 리스트인 list_dict 생성
list_dict['b'].append(1) # 'b' 키에 1을 추가
print(list_dict) # 출력: defaultdict(<class 'list'>, {'b': [1]})
set_dict = defaultdict(set) # 초기값이 빈 집합인 set_dict 생성
set_dict['c'].add(1) # 'c' 키에 1을 추가
print(set_dict) # 출력: defaultdict(<class 'set'>, {'c': {1}})
위의 예시는 각각 `int`, `list`, `set` 타입으로 딕셔너리를 초기화하는 예시 코드입니다. 딕셔너리의 정보를 저장할 데이터형식을 지정하고 빈 데이터 형식을 초기값으로 넣을 수 있기 때문에 다양한 알고리즘 문제나 데이터 구조를 정의하기에 편리합니다.
이렇듯 defaultdict를 활용하면 코드를 간결하게 작성할 수 있고, 존재하지 않는 키에 대한 예외 처리를 줄일 수 있습니다. 따라서 적절히 활용하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.
'Programming > Python' 카테고리의 다른 글
Python Set 사용 방법 (2) | 2024.04.05 |
---|---|
Python 리스트 추가,병합,리스트 컴프리핸션 (0) | 2024.04.05 |
Python에서 Null 체크하는 방법 (0) | 2024.04.02 |
Python으로 네이버 주가 가져오기: 간단한 크롤링 가이드 (0) | 2024.03.26 |
Python에서 날짜 다루기 - 날짜만 사용하기 (0) | 2024.03.12 |