[python] 파이썬 Counter 함수 사용법
안녕하세요. gaki 입니다.
오늘은 파이썬에서 리스트 안 원소의 개수를 세주는 함수 Counter() 에 대해서 이야기 해보려 합니다.
주로 리스트에서 특정 원소의 개수를 카운팅할 때 사용하곤 하는 함수입니다.
<목차>
1. Counter 함수 설명
2. Counter 함수 예제
1. 파이썬 Counter 함수 설명
Counter 함수는 collections 라이브러리에 존재하는 함수 입니다.
import collections 를 통해서 collections 라이브러리를 가지고 오고
Counter(arr ? : List) => counter(dict)
이런식으로 카운팅 하고 싶은 리스트를 인자로 입력하면 각 인자를 키로 가지고, value 에는 각 인자의 키가 리스트에 몇개 존재하는지 나타내주는 딕셔너리를 반환합니다.
좀 더 정확하게 보면
인자로 아무것도 주어지지 않게 되면 비어있는 counter 딕셔너리가 생성됩니다.
2. 파이썬 Counter 함수 예제
참고 공식 문서: https://docs.python.org/3/library/collections.html
from collections import Counter
myList = [1,1,2,2,3,3,4,4,5,6]
myList2 = [3,10,12,12,14]
## 1. 카운터 만들기
myCounter = Counter(myList)
myCounter2 = Counter(myList2)
print(f'첫번째 카운터: {myCounter}') # 첫번째 카운터: Counter({1: 2, 2: 2, 3: 2, 4: 2, 5: 1, 6: 1})
print(f'두번째 카운터: {myCounter2}') # 두번째 카운터: Counter({12: 2, 3: 1, 10: 1, 14: 1})
## 2. Counter 의 most_common 메서드
common = myCounter.most_common()
common2 = myCounter2.most_common()
print(f'첫번째 카운터 most_common : {common}') # 첫번째 카운터 most_common : [(1, 2), (2, 2), (3, 2), (4, 2), (5, 1), (6, 1)]
print(f'두번째 카운터 most_common : {common2}') # 두번째 카운터 most_common : [(12, 2), (3, 1), (10, 1), (14, 1)]
## 3. Counter 의 subtract 메서드
myCounter.subtract(myCounter2)
print(f'첫번째 카운터 - 두번째 카운터 : {myCounter}') # 첫번째 카운터 - 두번째 카운터 : Counter({1: 2, 2: 2, 4: 2, 3: 1, 5: 1, 6: 1, 10: -1, 14: -1, 12: -2})
1) Counter(List:list)
[1,1,2,2,3,3,4,4,5,6] 이라는 리스트를 Counter() 의 인자로 넣으면
각 인자의 개수가 담긴 카운터 딕셔너리가 리턴됩니다.
2) Counter.most_common() 메서드
Counter 의 most_common() 메서드를 호출하게 되면 튜플이 담긴 리스트를 리턴해줍니다.
각 튜플은 (key, value)의 2개의 원소로 구성되어 있고 key 는 말 그대로 키, value 는 key 가 리스트에 존재하는 개수입니다.
3) Counter.subtract(counter:Counter) 메서드
Counter 의 subtract 매서드는 인자로 다른 Counter 딕셔너리를 받습니다.
메서드를 호출한 Counter 에서 인자에 들어간 Counter 를 빼고, 그 결과를 바로 매서드를 호출한 Counter 에 적용합니다.