본문 바로가기

Python

[Python3] Collection 모듈 내 Counter 관련

반응형

Counter? 뭐하는거지

Collection 모듈은 외부 패키지 설치가 필요없이 기본으로 파이썬 내에 내장되어 있는 모듈이다. 하지만 따로 import를 해줘서 사용해야만 한다. 이 안에는 다음과 같은 주요 메소드 및 클래스들이 있다.

  • namedtuple() : 튜플 타입의 subclass를 만들어주는 메소드
  • OrderedDict : 순서가 있는 dictionary를 만들어주는 클래스
  • Counter : hash 가능한 객체를 카운트하는 dictionary 클래스

알고리즘 문제를 풀 때 뭔가 유용할 것 같아서 정리를 해본다.

 

기본 사용법

def find_max(word) :
    counter = Counter(word)
    max_count = -1
    for letter in counter:
        if counter[letter] > max_count:
            max_count = counter[letter]
            max_letter = letter
    return max_letter, max_count

find_max('hello world')

############### RESULT ################
('l', 3)

collections 내 Counter 클래스를 사용하지 않는다면 다음과 같은 형태로 주어진 단어에서의 갯수가 가장 많은 알파벳과 그 개수를 구하는 코드를 작성할 것이다. 하지만 Counter 클래스를 사용한다면 다음과 같이 작성할 수 있다.

from collections import Counter

print(Counter('hello world').most_common())

most_common() 메소드는 데이터의 개수가 많은 순으로 정렬된 튜플 리스트를 리턴하는 기능을 수행한다. 또한, 인자에 숫자를 넘기면 그 숫자의 갯수만큼만 앞에서부터 뽑아서 리턴을 해준다. 앞으로 다양한 알고리즘 문제를 풀면서 유용하게 사용할 수 있을 것만 같다.

from collections import Counter

print(Counter('hello world').most_common(2))

 


반응형

'Python' 카테고리의 다른 글

[Python3] 내장 함수 관련 정리  (0) 2020.03.19
[Python3] 함수 관련 정리  (0) 2020.03.15
[Python3] 제어문 관련 정리  (0) 2020.03.13
[Python3] 집합 관련 정리  (0) 2020.03.12
[Python3] 제어문 관련 정리  (0) 2020.03.12