[Python] Counter 란?
- Programming/Python 기초
- 2020. 11. 13.
python을 사용하다 보면 문자열이나 리스트에 대해, 각 항목이 몇 개로 이루어져 있는지 구하고 싶을 때가 있습니다. 딕셔너리를 이용해 코드를 짤 수도 있지만, collections 모듈의 Counter 클래스를 사용한다면 간단하게 구할 수 있습니다.
Counter 클래스는 문자열이나 리스트 등의 배열 형태를 입력으로 받습니다.
1. 문자열 Counting
from collections import Counter
Counter('HelloWorld')
# 출력: Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, 'W': 1, 'r': 1, 'd': 1})
Counter클래스에 문자열을 주면, 출력으로 각 문자가 몇 개나 나오는지 딕셔너리 형태로 출력해줍니다. 즉, Counter 자료형은 기본적으로 딕셔너리입니다. 그렇기 때문에 딕셔너리의 기능들을 사용할 수 있습니다.
Counter('HelloWorld')['l'] # 출력: 3
위처럼 바로 'HelloWorld'에서 'l'의 개수를 출력할 수 있습니다.
2. 리스트 Counting
li = list('HelloWorld')
print(li)
# 출력: ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
print(Counter(li))
# 출력: Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, 'W': 1, 'r': 1, 'd': 1})
위 1. 의 문자열을 list 형태로 바꾼 뒤에, Counter를 사용했습니다. 리스트를 이루는 각 요소의 개수를 딕셔너리 형태로 출력합니다.
3. 데이터 많은 순으로 출력 (most_common)
Counter 클래스는 일반적인 딕셔너리와 마찬가지로, 키(key)에 대해 순서가 없습니다.([Python/Python 기초] - [Python] Ordered dict) Counter의 출력으로 빈도수가 많은 키부터 출력하고자 할 때는 most_common() 기능을 사용하면 됩니다. 아래는 위 2. 의 li (리스트 변수)에 대해 Counter와 most_common()을 사용한 결과입니다.
print(Counter(li).most_common())
# 출력: [('l', 3), ('o', 2), ('H', 1), ('e', 1), ('W', 1), ('r', 1), ('d', 1)]
출력은 빈도수가 가장 많은 (키, 값) 쌍을 원소로 갖는 리스트 형태로 출력됩니다. 만약, 가장 빈도수가 많은 (키, 값) 쌍을 2개만 보고 싶다면, 아래와 같이 most_common의 인자로 2를 넣어주면 됩니다.
print(Counter(li).most_common(2))
# 출력: [('l', 3), ('o', 2)]
마치며
데이터의 요소 개수를 셀 때, Counter는 요긴하게 쓰입니다. 딕셔너리 형태이기 때문에, 딕셔너리 컴프리헨션 등의 기능과 함께 쓰면 편하게 데이터를 다룰 수 있습니다. [Python/Python 꿀팁] - [Python의 꽃] 리스트 컴프리헨션(List Comprehension) 다음에 더 유익한 글로 찾아오겠습니다. 감사합니다.
Python logo: https://ourcodeworld.com/articles/read/734/why-is-python-the-future-of-programming
'Programming > Python 기초' 카테고리의 다른 글
[Python] 얕은복사와 깊은복사 개념&예시 (shallow copy, deep copy) (0) | 2022.07.10 |
---|---|
[Python] 삼항 연산자 (Tenary Operator) (0) | 2022.07.08 |
[Python] map 함수란? 활용법(lambda) (0) | 2020.10.25 |
[Python] Ordered dict 이란 (0) | 2020.09.20 |
[Python] 딕셔너리: 키(key) 값(value) 바꾸기(swap) (0) | 2020.09.16 |