알고리즘

[python] 파이썬 Counter 함수 사용법

유병각 2022. 5. 6. 23:51

안녕하세요. 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 에 적용합니다.