Programming/Python

defaultdict 초기화 종류

느리게 걷는 즐거움 2024. 4. 2. 10:34
반응형

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

반응형