파이썬 collections.Counter

sen·2022년 9월 10일
0

공식문서: https://docs.python.org/ko/3/library/collections.html#collections.Counter

해시 문제 풀이법에서 발견한 클래스


정의

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


특징

  • Counter 객체는 누락된 항목에 대해 KeyError를 발생시키는 대신 0을 반환한다는 점을 제외하고 딕셔너리 인터페이스를 갖습니다.
c = Counter(['eggs', 'ham'])
c['bacon'] # count of a missing element is zero
>> 0
  • dict의 서브 클래스로써, Counter 는 삽입 순서를 기억합니다. Counter 클래스에서의 수학 연산 또한 순서를 보존합니다.
c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
c + d                       # add two counters together:  c[x] + d[x]
>> Counter({'a': 4, 'b': 3})
c - d                       # subtract (keeping only positive counts)
>> Counter({'a': 2})
c & d                       # intersection:  min(c[x], d[x])
>> Counter({'a': 1, 'b': 1})
c | d                       # union:  max(c[x], d[x])
>> Counter({'a': 3, 'b': 2})
c == d                      # equality:  c[x] == d[x]
>> False
c <= d                      # inclusion:  c[x] <= d[x]
>> False

메소드

  • elements()
    : 개수만큼 반복되는 요소에 대한 이터레이터를 반환합니다. 요소는 처음 발견되는 순서대로 반환됩니다. 요소의 개수가 1보다 작으면 elements()는 이를 무시합니다.
c = Counter(a=4, b=2, c=0, d=-2)
sorted(c.elements())
>> ['a', 'a', 'a', 'a', 'b', 'b']
  • most_common([n])
    : n 개의 가장 흔한 요소와 그 개수를 가장 흔한 것부터 가장 적은 것 순으로 나열한 리스트를 반환합니다. n이 생략되거나 None이면, most_common()은 계수기의 모든 요소를 반환합니다. 개수가 같은 요소는 처음 발견된 순서를 유지합니다
    O(NlogN) - sorted list로 계산
Counter('abracadabra').most_common(3)
>> [('a', 5), ('b', 2), ('r', 2)]
  • subtract([iterable-or-mapping])
    : 이터러블이나 다른 매핑 (또는 계수기)으로부터 온 요소들을 뺍니다. dict.update()와 비슷하지만 교체하는 대신 개수를 뺍니다. 입력과 출력 모두 0이나 음수일 수 있습니다.
c = Counter(a=4, b=2, c=0, d=-2)
d = Counter(a=1, b=2, c=3, d=4)
c.subtract(d)
c
>> Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
profile
𝙝𝙞 𝙩𝙝𝙚𝙧𝙚 😎

0개의 댓글