리스트나 문자열의 원소의 개수를 알고 싶을 때 파이썬의 collections 모듈의 Counter 클래스를 사용하면 매우 편리하다.
collections 모듈의 Counter 클래스는 파이썬의 기본 자료구조인 사전(dictionary)를 확장하고 있기 때문에, 사전에서 제공하는 API를 그대로 다 시용할 수가 있으며 자료의 원소를 key
해당 원소의 개수를 value
로 하는 dictionary로 반환시켜준다.
>>>word = "hhhhhhhhhhhhhhhi"
>>>word = Counter(word)
>>>print(word)
Counter({'h': 15, 'i': 1})
어떤 자료가 주어졌을때 자료에서 제일 많은 개수의 원소는 무엇인가 알고 싶다면 Counter의 method 인 most_common()
을 이용하여 쉽게 알 수 있다.
most_common()
은 Counter자료형의 key, value 를 (key, value)의 set로 이루어진 list로 반환을 해주는데 이때 value 가 큰 순으로 정렬을 해준다.
>>>words = "aaabbbbccccdddeeffssssss"
>>>word = Counter(words).most_common()
>>>print(word)
[('s', 6), ('b', 4), ('c', 4), ('a', 3), ('d', 3), ('e', 2), ('f', 2)]
이 메서드의 인자로 숫자 k를 넘기면 그 숫자 만큼만 리턴하기 때문에, 가장 개수가 많은 K개의 데이터를 얻을 수도 있습니다.
>>>words = "aaabbbbccccdddeeffssssss"
>>>word = Counter(words).most_common(2)
>>>print(word)
[('s', 6), ('b', 4)