프로그래밍 언어/Python
collections.defaultdict 사용법
claire
2022. 4. 25. 13:52
파이썬의 내장 자료구조인 dictionary를 사용하다보면 어떤 키에 대한 값이 없는 경우에 대한 처리를 해야하는 경우가 자주 발생한다. 이러한 경우 일반적으로 어떻게 처리하는지 살펴보고 관련한 해결 방법을 알아보도록 하자.
1. dic.setdefault
파이썬의 딕셔너리는 setdefault 함수를 제공한다. 첫번째 인자로 key값, 두번째 인자로 기본값을 넘기면 된다.
def countLetters(word):
counter = {}
for letter in word:
counter.setdefault(letter, 0)
counter[letter] += 1
return counter
하지만 for 루프 내에서 setdefault 함수가 무조건적으로 항상 호출되는 부분이 좀 별로다.
더 나은 방법.
2. collections.defaultdict
defaultdict 클래스의 생성자로 기본값을 생성해주는 함수를 넘기면, 모든 키에 대해서 값이 없는 경우 자동으로 생성자의 인자를 넘어온 함수를 호출하여 그 결과값으로 설정해준다.
from collections import defaultdict
def count(word):
counter=defaultdict(int)
for letter in word:
counter[letter]+=1
return counter
여기서 defaultdict 클래스의 생성자로 int 함수를 넘긴 이유는 int()는 0을 리턴하기 때문입니다. 람다 함수를 활용해서 다음과 같이 int 함수 대신에 lambda: 0를 넘겨도 동일하게 작동을 합니다.
grouper = defaultdict(list)
for word in words:
length = len(word)
grouper[length].append(word)
위와 같이 빈 리스트를 세팅할 수도 있다.