Counter는 파이썬 collections 모듈에 포함되는 항목의 개수를 셀 때 유용한 클래스이다.
from collections import Counter
이렇게 import 만으로 사용 가능하다.
num = [1, 1, 2, 2, 2, 5, 9, 7]
count = Counter(list_ex)
# Counter({1: 2, 2: 3, 5: 1, 7: 1, 9:1})
위와 같이, 리스트에 각각의 원소가 얼마나 들어있는지 카운트해주는 역할을 한다. 딕셔너리 형태의 key, value로 반환해준다.
백준 p4358 의 생태학 문제를 풀다보면
Red Alder
Ash
Aspen
Basswood
Ash
Beech
Yellow Birch
Ash
이러한 각 줄의 문자열을 하나의 배열에 넣고, 중복된 문자열이 포함된 배열의 개수를 세어야한다.
이 문자열들을 저장한 배열을 arr 라고 한다면,
arr = Counter(arr).items()
이렇게 Counter 클래스와, 그의 함수인 items() 를 이용할 수 있다. items()함수는 key,value 쌍을 튜플 형태로 반환해주는 역할을 한다.
arr = sorted(Counter(arr).items())
위와 같이 정렬까지 해 준 후 , print(arr)를 통해 확인해보면
[('Ash', 3), ('Aspen', 1), ('Basswood', 1), ('Beech', 1), ('Red Alder', 1), ('Yellow Birch', 1)]
이렇게 (해당문자열, 카운트된 갯수)의 튜플로 저장된 리스트임을 확인할 수 있다.
그냥 문자열에도 적용 가능하다!!
Counter("hello world")
#Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})