[Python] 데이터 중복 체크 | collections 모듈 Counter 메소드

Gaanii·2024년 10월 13일

Python

목록 보기
3/5
post-thumbnail

프로그래머스 PCCE 기출 3번 충돌위험 찾기 문제를 풀다가 생각나서 적어두는 함수 정리


Counter

이는 데이터의 개수를 셀 때 굉장히 유용하게 사용된다.
python collecitons 모듈의 Counter 클래스이다.
return type은 Dictionary 자료형이다.

사용법

별도 패키지 설치가 필요 없고, python이 설치가 되어있다면 아래 코드처럼 import해서 사용할 수 있다.

from collections import Counter

예시

1. 문자열 알파벳별 개수 체크

>>> example = Counter("Hello Python")
>>> example
Counter({'l': 2, 'o': 2, 'H': 1, 'e': 1, ' ': 1, 'P': 1, 'y': 1, 't': 1, 'h': 1, 'n': 1})


2. 가장 많은(흔한) 데이터 찾기

most_common이라는 메소드를 제공한다. 이는 데이터의 개수가 가장 많은 순으로 정렬된 배열을 리턴한다.
여기서, most_common에 인자값을 넣을 수 있는데 인자값은 리턴할 숫자 개수를 의미한다.

>>> example = Counter('Hello Python').most_common()
>>> example
[('l', 2), ('o', 2), ('H', 1), ('e', 1), (' ', 1), ('P', 1), ('y', 1), ('t', 1), ('h', 1), ('n', 1)]

>>> example = Counter('Hello Python').most_common(3)
>>> example
[('l', 2), ('o', 2), ('H', 1)]


3. 입력된 값의 요소 반환

입력된 값의 요소들을 전부 풀어헤쳐서 반환해준다.
값을 정렬하고 싶다면 sorted()를 이용하면 된다.
추가로, 없는 요소(요소의 개수가 1 미만)이라면 반환하지 않는다.

>>> example = Counter("I am Babo..")
>>> print(list(example.elements()))
['I', ' ', ' ', 'a', 'a', 'm', 'B', 'b', 'o', '.', '.']

>>> print(sorted(example.elements())
[' ', ' ', '.', '.', 'B', 'I', 'a', 'a', 'b', 'm', 'o']


4. 프로그래머스 문제에서 활용 예시

current_time_robot_pos에 있는 데이터의 개수를 체크했다.
문제에서는 [(6, 4), (4, 6), (6, 4), (4, 6)]과 같은 케이스가 있는데 이때 Counter를 사용하게 되면 (6, 4) : 2, (4, 6) : 2와 같은 결과를 받을 수 있다.

validate_current_pos = Counter(current_time_robot_pos)
for pos in validate_current_pos.values():
   if pos >= 2:
     conflict += 1

0개의 댓글