[Python] collections.Counter

송진수·2021년 7월 16일
0

Counter 클래스

collections 모듈은 파이썬 list, dict, set, tuple의 대안으로 활용할 수 있는 컨테이너 데이터 타입을 제공한다.

그 중에서도 Counter는 입력 받은 iterable 혹은 mapping의 요소와 그 개수를 dict 형태로 저장하는 데이터 타입이다.

Counter 클래스의 장점은 Counter끼리 연산이 가능하다는 것이다.

from collections import Counter

a = ['a','b','c','d','e']
b = ['a','b','c','d','e','d']
c = 'I am c'

_a = Counter(a)
# Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1})
_b = Counter(b)
# Counter({'d': 2, 'a': 1, 'b': 1, 'c': 1, 'e': 1})
_c = Counter(c)
# Counter({' ': 2, 'I': 1, 'a': 1, 'm': 1, 'c': 1})

리스트를 Counter로 변환할 경우, count 메서드를 사용할 필요 없이 리스트 내에서 중복이 되는 요소를 쉽게 검색할 수 있다.

[x for x in _b if _b[x] >= 2]
# ['d']

또한 리스트를 집합으로 변환할 필요 없이 집합 연산처럼 활용할 수도 있고, value값만 연산하는 것도 가능하다.

_b - _a
# Counter({'d': 1})

__b = _b.subtract(a)
print(__b)
# Counter({'d': 1, 'a': 0, 'b': 0, 'c': 0, 'e': 0})

Counter 클래스의 나머지 메서드들은 공식 라이브러리 문서에서 열람할 수 있다.

profile
보초

0개의 댓글