영호

[Python] defaultdict란? 본문

Language/Python

[Python] defaultdict란?

0h0 2022. 5. 17. 01:11

들어가며

파이썬에는 다양한 자료구조가 있다. list, set, dictionary 등등이 존재한다.

이번에는 dictionary와 비슷한 defaultdict에 대해서 알아볼 예정이다.

defaultdict란?

우선 형태는 dictionary와 동일하게 [key : value] 형식으로 구성된다. 그러나 이름에서 유추할 수 있듯, 모든 key에 대해 기본(default) 값을 설정해준다. 이렇게 글로 보면 이해가 잘 되지 않으니 코드를 보면서 더 알아보겠습니다.

defaultdict사용법

1. import 하기

  • defaultdict는collections모듈에 속해있습니다.
from collections import defaultdict

2. defaultdict 선언하기

  • defaultdict를 만들 때는 뒤에 value에 어떤 타입으로 기본값을 설정할지 명시해줍니다. ex) int, str, list, set 등등
test_defaultdict = defaultdict(int)
  • 위와 같이 코드를 작성하면 test_defaultdict는 모든 key값에 대해서 기본적으로 int의 기본값인 0을 생성해줍니다.
  • int = 0, str = "", list = []

defaultdict의 장점

  • 제가 사용하면서 느낀 점은 코드가 줄어든다는 것입니다.
  • 기본적으로 그냥 dictionary의 경우 존재하지 않는 key값에 접근하게 되면 에러가 발생합니다.
  • 그러나 defaultdict는 존재하지 않는 key값에 기본값을 설정해주기 때문에 에러가 발생하지 않습니다.
  • 예시를 통해 추가적으로 살펴보겠습니다.

defaultdict 사용해보기

주어진 영문장에서 알파벳과 공백의 빈도수를 체크하는 코드를 작성해보겠습니다.
from collections import defaultdict

word = "python is good"
word_count = defaultdict(int)

for letter in word:
    word_count[letter] += 1

print(word_count)
defaultdict(<class 'int'>, {'p': 1, 'y': 1, 't': 1, 'h': 1, 'o': 3, 'n': 1, ' ': 2, 'i': 1, 's': 1, 'g': 1, 'd': 1})
  • 만약 그냥 dictionary를 사용했다면 key값을 체크하는 코드를 추가했어야 했지만, defaultdict(int)를 사용해 모든 키 값에 대해 0으로 할당을 했기 때문에 key존재 유무를 따로 검사할 필요 없이 바로 1을 더할 수 있었습니다.
Comments