본문 바로가기
python

10. Extra Data Structure - 1, defaultdict, counter

by 장인이 2021. 1. 13.

  defaultdict는 collections라는 내장 dictionary에 포함되어 있습니다. 이는 함수 이름 그대로, default 값을 가진 dict를 자동으로 만들어 줍니다.

 

ex)

list_a = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 
		'a', 'a', 'a', 'a', 'c', 'c', 'c', 'c', 'c', 'e', 'e', 'e', 'c', 'c', 'c']
from collections import defaultdict
count = defaultdict(int) # count는 어떤 key값을 받을 때 자동적으로 value의 기본값을 int로 하게 됨
for word in list_a:
    count[word] += 1

print(dict(count))

# 출력 값
# {'a': 11, 'b': 5, 'c': 8, 'e': 3}

 

  위 상황에서 count['a']를 입력하는 경우, 자동적으로 count = {'a' : 0}이 됩니다. 위의 코드에서는 어떤 단어가 올 때마다 +1을 해줌으로서 단어의 빈도수를 확인할 수 있습니다.

 

 

  위의 방법을 사용해도 되지만, collections 내장 dictionary에 포함되어있는 Counter를 사용한다면 더 간단하게 단어의 빈도수를 계산할 수 있을 것입니다.

 

ex)

from collections import Counter
list_a = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 
	'a', 'a', 'a', 'a', 'c', 'c', 'c', 'c', 'c', 'e', 'e', 'e', 'c', 'c', 'c']
count = Counter(list_a)
print(dict(count))

  결과 값은 defaultdict를 사용했을 경우와 동일합니다.

댓글