on1ystar 머릿속을 정리, 기록하는 곳

Python 문자 개수 카운트 collections.Counter



  • Counter는 해시 가능한 객체를 세기 위한 dict 서브 클래스
  • 요소가 딕셔너리 키로 저장되고 개수가 딕셔너리값으로 저장되는 컬렉션
  • 개수는 0이나 음수를 포함하는 임의의 정숫값이 될 수 있다


어떤 원소 x가 주어진 시퀀스타입에 몇 번이나 등장하는지 세야 할 때


import collections
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 7, 9, 1, 2, 3, 3, 5, 2, 6, 8, 9, 0, 1, 1, 4, 7, 0]
answer = collections.Counter(my_list)

print(answer[1]) # = 4
print(answer[3])  # = 3
print(answer[100]) # = 0

출처: https://programmers.co.kr/learn/courses/4008/lessons/12804#note


elements()


개수만큼 반복되는 요소에 대한 이터레이터를 반환. 요소는 처음 발견되는 순서대로 반환. 요소의 개수가 1보다 작으면 elements()는 이를 무시.

>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> sorted(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']


most_commom([n])


n 개의 가장 흔한 요소와 그 개수를 가장 흔한 것부터 가장 적은 것 순으로 나열한 리스트를 반환. n이 생략되거나 None이면, most_common()은 계수기의 모든 요소를 반환. 개수가 같은 요소는 처음 발견된 순서를 유지

>>> Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]


update([iterable-or-mapping])


요소는 이터러블에서 세거나 다른 매핑(또는 계수기)에서 더한다. dict.update()와 비슷하지만, 교체하는 대신 더함.

import collections
a = collections.Counter()
print(a)
a.update("abcdefg")
print(a)
'''
결과
Counter()
Counter({'f': 1, 'e': 1, 'b': 1, 'g': 1, 'c': 1, 'a': 1, 'd': 1})
'''

a.update({'f':3, 'e':2})
print(a)

'''
결과
Counter({'f': 4, 'e': 3, 'b': 1, 'g': 1, 'c': 1, 'a': 1, 'd': 1})
'''

출처: https://excelsior-cjh.tistory.com/94 [EXCELSIOR]

Reference

collections.Counter() 공식문서

프로그래머스 - 파이썬을 파이썬답게

https://excelsior-cjh.tistory.com/94