Seul Lee

Mathpresso 서버 개발자

Navigation
 » Home
 » Github
 » XML Feed

Python collections module 01, Counter

30 Dec 2016 » python, collections

공식 문서: https://docs.python.org/3/library/collections.html

collections 내 자료구조 namedtuple, deque, Counter, OrderedDict, defaultdict 등에 대한 내용

1. Counter

리스트나 문자열에 포함된 요소들 각각의 갯수를 dictionary형태로 반환

from collections import Counter

print(Counter(['aa', 'cc', 'dd', 'aa', 'bb', 'ee']))
print(Counter({"가":3, "나":2, "다":5}))
print(Counter(a=3, b=23, c=11, d=0))
print(Counter("Hellow hellow"))

결과값

Counter({'aa': 2, 'ee': 1, 'bb': 1, 'cc': 1, 'dd': 1})
Counter({'다': 5, '가': 3, '나': 2})
Counter({'b': 23, 'a': 3, 'c': 11, 'd': 0})
Counter({'l': 4, 'o': 2, 'w': 2, 'e': 2, 'h': 1, ' ': 1, 'H': 1}) 


update()

카운터 객체에 값을 추가할 때

ct = Counter("abcde")
print(ct)

ct.update({'f':4, 'z': 100})
print(ct)

# 이런식으로도 가능
ct['x'] = 0
print(ct)

결과값

Counter({'c': 1, 'a': 1, 'b': 1, 'd': 1, 'e': 1})
Counter({'z': 100, 'f': 4, 'c': 1, 'a': 1, 'b': 1, 'd': 1, 'e': 1})
Counter({'z': 100, 'x': 0, 'f': 4, 'c': 1, 'a': 1, 'b': 1, 'd': 1, 'e': 1})


elements()

# 위에서 쓴 ct
print(list(ct.elements()))

결과값

['c', 'a', 'b', 'f', 'f', 'f', 'f', 'd', 'e', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z']


most_common()

가장 많이 나온 값들의 시퀀스를 리턴

print(ct.most_common())
print(ct.most_common(1))
print(ct.most_common(3))

결과값

[('z', 100), ('f', 4), ('c', 1), ('a', 1), ('b', 1), ('d', 1), ('e', 1)]
[('z', 100)]
[('z', 100), ('f', 4), ('c', 1)]
Counter 객체는 산술/집합 연산이 가능하다.(+, -, |, & 등)