영호
[Python] defaultdict란? 본문
들어가며
파이썬에는 다양한 자료구조가 있다. 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을 더할 수 있었습니다.
'Language > Python' 카테고리의 다른 글
[Python] 조합, 순열 (combinations, permutations) (0) | 2022.06.04 |
---|---|
[Python] 문자열 뒤집기 - reverse(), s[::-1] (0) | 2022.06.03 |
[Python] Set (0) | 2022.06.03 |
[Python] 파이썬 정렬, lambda사용 (0) | 2022.05.10 |
Comments