본문 바로가기
Programming/Python

defaultdict 초기화 종류

by 느리게 걷는 즐거움 2024. 4. 2.
728x90
반응형

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를 활용하면 코드를 간결하게 작성할 수 있고, 존재하지 않는 키에 대한 예외 처리를 줄일 수 있습니다. 따라서 적절히 활용하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

728x90
반응형