728x90
파이썬 collections 모듈
- collections모듈은 파이썬에서 일반적으로 제공되고 있는 dict, list, set, tuple의 대안을 제공해주는 특별한 데이터 컨테이너들의 집합이다.
- 큐를 이용하는 구현을 할 때 사용하는 deque 역시 collections 모듈에서 사용할 수 있다.
- collections 모듈에는 활용도 높아 보이는 container들이 많이 보였는데 오늘은 그중 Counter에 대해 공부해 보았다.
1. Counter
- Counter는 해시 가능한 객체를 세는 데 사용하는 딕셔너리 서브 클래스이다.
- 여기서 해시란 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한다는 것이다.
(이를 이용하여 특정한 배열의 인덱스나 위치, 위치를 입력하여 데이터의 값을 지정하거나 찾을 수 있다.) - 즉, 해시 가능한 객체라는 의미는 고정된 길이를 가진 데이터로 매핑이 가능한 데이터라는 뜻이고, 파이썬에서는 보통 Immutable 한 객체를 해시 가능한 객체라고 한다. 정리하자면, Counter는 해시 가능한 객체(Immutable 한 객체)를 세어주는 딕셔너리의 서브 클래스이다.
- 리스트(list), 딕셔너리(dict), 집합(set) 등은 변경 가능한(mutable) 객체이다.
- 해시 가능한 객체: 정수, 부동 소수점, 문자열, 튜플 등 변경 불가능한 객체
- 해시 불가능한 객체: 리스트, 딕셔너리, 집합 등 변경 가능한 객체
1.2 Counter 사용법
- 위에서 설명한 것처럼 Counter는 해시가능한 객체 요소가 딕셔너리 키로 저장되고 개수가 딕셔너리의 값으로 저장된다.
- 여기서 개수는 0이나 음수를 포함하는 임의의 정숫값이 될 수 있다.
- 문자열, 리스트, 튜플 또는 다른 반복 가능한(iterable) 객체를 인수로 받아 생성할 수 있다.
from collections import Counter
# 문자열을 이용해 Counter 생성
c = Counter("hello world")
print(c)
# 출력: Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
# 리스트를 이용해 Counter 생성
c = Counter([1, 2, 2, 3, 3, 3])
print(c)
# 출력: Counter({3: 3, 2: 2, 1: 1})
# 튜플을 이용해 Counter 객체 생성
data_tuple = (1, 2, 2, 3, 3, 3)
counter = Counter(data_tuple)
print(counter)
# 출력: Counter({3: 3, 2: 2, 1: 1})
1.3 Counter additional methods
- elements()
- 요소의 개수만큼 반복되는 순환자료형을 반환한다.
- 여기서 주의할 점은 Collector 역시 Dict과 마찬가지로 순서가 존재하지 않기 때문에 처음 발견되는 순서대로 반환한다.
- most_common([n])
- 가장 갯수가 많은 것부터 적은 것 순으로 n개 나열한 리스트를 반환한다. (정렬의 기능)
c = Counter("hello world")
print(c.most_common(2))
# 출력: [('l', 3), ('o', 2)]
- subtract([iterable-or-mapping])
- 순환 자료형이나 다른 매핑 자료형으로부터 현재 카운터의 개수만큼 밴 후 카운터 객체를 반환한다.
- 여기서 0이나 음수를 반환할 수 있다.
728x90
'Python' 카테고리의 다른 글
[Python] enumerate함수 (0) | 2024.08.08 |
---|---|
[코테 알고리즘] 프로그래머스 고득점 Kit - 완전탐색 (0) | 2024.03.18 |
Python - Set() (0) | 2023.03.04 |
[Python] DFS & BFS (0) | 2023.02.18 |
[Python] 자료구조 : 큐(Queue) 개념 및 사용 (0) | 2023.02.18 |