collections 모듈의 Counter 클래스
정리 이유
완주하지 못한 선수 문제 풀이에서 처음 본 모듈이기 때문에 익히고 잊지 않기 위해 정리해둔다.
Counter 클래스
- Counter 객체는 아이템에 대한 개수를 계산해 딕셔너리로 리턴한다.
- Counter 객체가 리턴하는 딕셔너리의
- 키에는 아이템의 값이
- 값에는 해당 아이템의 개수가 들어간다.
Counter 객체 사용
1 | import collections |
위의 코드는 아래와 같은 Counter 객체를 출력한다.
Counter({5: 3, 6:2, 1: 1, 2: 1, 3: 1, 4: 1})
5가 3개, 6이 2개, 1이 1개, 3이 1개, 4가 1개로 개수가 많은 것부터 출력된다.
Counter 객체에서 가장 빈도수가 높은 요소를 추출하고 싶다면
most_common(1) 함수를 사용한다.
1 | print(cnt.most_common(1)) |
위의 코드는 [(5,3)]와 같이 (가장 높은 빈도를 가지는 아이템, 그 아이템의 개수)가 튜플로 묶여 출력된다.
가장 빈도가 높은 n개의 요소를 추출하고 싶다면
most_common(n) 함수를 사용한다.
1 | print(cnt.most_common(2)) |
위의 코드는 [(5,3), (6,2)]를 출력한다.
most_common() 안에 매개변수를 넣지 않는다면
1 | print(cnt.most_common()) |
[(5, 3), (6, 2), (1, 1), (2, 1), (3, 1), (4, 1)]와 같이 모든 요소가 출력된다.
dictionary와 관련된 특수한 형태의 컨테이너 자료형
- collections.defaultdict 클래스를 가지는 defaultdict 객체
- collections.Counter 클래스를 가지는 Counter 객체
- collections.OrderdDict 클래스를 가지는 OrderedDict 객체
참고 자료
- 파이썬 알고리즘 인터뷰 p132-p134