본문 바로가기

라이브러리

[파이썬] Counter 모듈 사용법

Python Counter 모듈은 iterable한 객체 내 원소들의 개수를 셀 때 유용한 도구입니다. Counter는 dictionary와 유사한 형태를 가지며, 각 key에 대한 value로 해당 key가 iterable 객체 내에서 몇 번 등장하는지를 저장합니다.

1. 예제 코드


아래는 Counter 모듈을 사용하여 간단한 예시를 만드는 방법입니다.

from collections import Counter

# 리스트에서 각 원소의 개수를 세기
my_list = [1, 1, 2, 3, 4, 4, 4, 5]
my_counter = Counter(my_list)
print(my_counter)  # 출력: Counter({4: 3, 1: 2, 2: 1, 3: 1, 5: 1})

# 문자열에서 각 문자의 개수를 세기
my_string = "hello, world!"
my_counter = Counter(my_string)
print(my_counter)  # 출력: Counter({'l': 3, 'o': 2, 'e': 1, 'h': 1, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1})

# Counter 객체끼리 더하기
a = Counter('aaabbc')
b = Counter('bccddd')
c = a + b
print(c)  # 출력: Counter({'b': 3, 'c': 3, 'd': 3, 'a': 3})


Counter 객체의 주요 메서드는 다음과 같습니다.

  • elements(): Counter에 포함된 모든 원소를 리스트 형태로 반환합니다.
  • most_common(n): 가장 빈도가 높은 n개의 원소와 해당 개수를 리스트로 반환합니다. n이 지정되지 않으면 전체 원소를 반환합니다.
  • update(iterable): iterable 객체의 원소들을 Counter에 추가합니다.
  • subtract(iterable): iterable 객체의 원소들을 Counter에서 뺍니다. 음수가 되는 key는 제거됩니다.
  • clear(): Counter 객체의 모든 원소를 제거합니다.

2. 주의할점


Counter 모듈을 사용할 때 주의해야 할 점은 다음과 같습니다.

  • Counter 객체는 딕셔너리와 비슷한 형태를 가지고 있지만, 딕셔너리와는 다른 목적으로 사용되므로 조심해서 사용해야 합니다.
  • Counter 객체는 key가 iterable 객체 내에 존재하는 경우에만 의미가 있으므로, key가 유일한 값을 가져야 하는 경우에는 일반적인 딕셔너리를 사용하는 것이 더 적합합니다.
  • Counter 객체는 원소의 개수를 세기 위해 메모리를 사용하므로, 큰 데이터셋에서는 성능상의 문제가 발생할 수 있습니다. 따라서 매우 큰 데이터셋의 경우에는 Counter 모듈 대신 다른 방법을 사용하는 것이 좋습니다.
  • Counter 객체는 값의 순서를 보장하지 않습니다. 따라서 원소의 순서가 중요한 경우에는 sorted 함수를 사용하여 정렬된 리스트를 얻어내는 것이 좋습니다.
  • Counter 객체의 메서드 중 일부는 파이썬 2.x 버전에서는 지원되지 않을 수 있으므로, 파이썬 버전을 확인하고 사용하는 것이 좋습니다.