상세 컨텐츠

본문 제목

[Python] 갯수 세기 Counter

coding

by golduny_zoo 2021. 5. 6. 17:15

본문

728x90

collections— 컨테이너 데이터형

docs.python.org/ko/3/library/collections.html

collections 모듈에서 Counter을 사용 해보았다. 

Counter

해시 가능한 객체를 세기 위한 dict 서브 클래스입니다.

요소가 딕셔너리 키로 저장되고 개수가 딕셔너리값으로 저장되는 컬렉션입니다. 

from collections import Counter

# 문자 카운팅
string = "a bbb cccc dd"
Counter(string)

>>> Counter({'a': 1, ' ': 3, 'b': 3, 'c': 4, 'd': 2})

# 리스트 카운팅
animal_list = ['dog', 'dog', 'cat', 'cat','cat', 'lion']
Counter(animal_list)
>>> Counter({'dog': 2, 'cat': 3, 'lion': 1})

메서드

 

elements() : 처음 발견되는 순서대로  모든 요소  나열  

c = Counter(a=4, b=2, c=0, d=3)
sorted(c.elements())
>>> ['a', 'a', 'a', 'a', 'b', 'b', 'd', 'd', 'd']

most_common([n]) : 개수가 가장 큰 것부터 n개가 나열.    n이 생략됬을 때 , most_common()은 계수기의 모든 요소를 반환. 

animal_list = ['dog', 'dog', 'cat', 'cat','cat', 'lion', 'tiger','tiger']
Counter(animal_list).most_common(3)
>>> [('cat', 3), ('dog', 2), ('tiger', 2)]

연산

c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
c + d                       # add two counters together:  c[x] + d[x]
>>> Counter({'a': 4, 'b': 3})
c - d                       # subtract (keeping only positive counts)
>>> Counter({'a': 2})
c & d                       # intersection:  min(c[x], d[x]) 
>>> Counter({'a': 1, 'b': 1})
c | d                       # union:  max(c[x], d[x])
>>> Counter({'a': 3, 'b': 2})

관련글 더보기