코딩테스트 - Counter

Soohwan·2024년 2월 29일
0

코딩테스트 - 이론

목록 보기
14/14

Counter는 collections 모듈(라이브러리) 안에 존재하는 클래스다. collections 모듈은 기본 제공하는 모듈로 별도의 다운로드 없이 바로 사용 가능하다. Counter는 이름에서도 알수있듯이 데이터나 항목을 세는 기능을 제공한다. 리스트나 문자열에서 각 원소(요소)의 갯수를 세는 작업을 한다. 딕셔너리와 동일한 형태이다.

from collections import Counter
my_list = ['red', 'blue', 'green', 'blue', 'blue']
my_str = 'World world'

print(type(Counter(my_list)), Counter(my_list))
print(type(Counter(my_str)), Counter(my_str))

출력

<class 'collections.Counter'> Counter({'blue': 3, 'red': 1, 'green': 1})
<class 'collections.Counter'> Counter({'o': 2, 'r': 2, 'l': 2, 'd': 2, 'W': 1, ' ': 1, 'w': 1})

위에 코드를 보면 각각의 원소들의 갯수가 세진 것을 알수있다. 또한 당연스럽게도 대소문자 역시 구별해준다. 딕셔너리와 동일한 형태로 저장된다. key에는 원소가 들어가고 value에는 원소의 갯수가 들어간다.

  1. 관련 활용
  • 딕셔너리
    딕셔너리 형태로 저장되기에 딕셔너리와 관련된 메서드를 사용할 수 있다.
from collections import Counter

my_list = ['red', 'blue', 'green', 'blue', 'blue']
counter = Counter(my_list)

print(f"blue: {counter['blue']}, yellow: {counter['yellow']}")
print(f"key: {counter.keys()}, values: {counter.values()}")

출력

blue: 3, yellow: 0
key: dict_keys(['red', 'blue', 'green']), values: dict_values([1, 3, 1])
  • 관련 메소드

    • most_common()
      Counter객체 안에서 원소의 갯수가 높은 순으로 정렬하여 반환한다. 괄호 안에 k를 입력함으로써 상위 k개의 원소를 얻을 수 있다.

    • subtract()
      두 개의 Counter객체를 비교해서 원소의 갯수를 빼는 연산을 수행한다.

my_list = ['red', 'blue', 'green', 'blue', 'blue']
counter = Counter(my_list)

print(counter.most_common())

counter1 = Counter({'apple': 3, 'banana': 2, 'orange': 1})
counter2 = Counter({'apple': 1, 'banana': 2, 'kiwi': 5})

counter1.subtract(counter2)

print(counter1)

출력

[('blue', 3), ('red', 1), ('green', 1)]                     # most_common 결과
Counter({'apple': 2, 'orange': 1, 'banana': 0, 'kiwi': -5}) # subtract 결과
profile
평범한 공대생

0개의 댓글