collections 모듈 주로 사용하는 클래스
| 클래스 | 설명 | 예시 사용처 |
|---|
Counter | 요소의 빈도수 계산에 특화된 dict 서브클래스 | 문자/단어 카운팅, 상위 n개 추출 |
defaultdict | 키가 없을 때 자동으로 기본값 생성 | 그룹핑, 누적 연산, 다중 dict 처리 |
deque | 양방향 큐, O(1) append/pop 양끝에서 가능 | BFS 큐, 슬라이딩 윈도우, 회전 |
namedtuple | 이름 붙은 tuple, 인덱스 대신 .name으로 필드 접근 가능 | 구조화된 데이터 (예: 좌표, 로그 등) |
OrderedDict | 삽입 순서 유지되는 dict (Python 3.7+ 일반 dict도 지원되지만 유용) | 순서가 중요한 딕셔너리 작업 |
ChainMap | 여러 dict를 하나처럼 합쳐서 다룰 수 있는 dict-like 객체 | 다단계 설정값 (예: default < env < cli) |
UserDict, UserList, UserString | dict, list, string을 상속하여 커스텀 자료구조 만들기 용도 | 자료구조 확장, validation 로직 삽입 |
| 클래스 | 주요 기능 | 사용 예 |
|---|
Counter | 빈도수 계산 | 단어/문자 세기 |
defaultdict | 기본값 자동 초기화 | 그룹핑, 누적 리스트/셋 처리 |
deque | 빠른 양방향 큐 | 슬라이딩 윈도우, 큐 |
namedtuple | 필드 이름이 있는 튜플 | 구조체 대용 |
OrderedDict | 순서 유지 | 순서 민감한 딕셔너리 |
ChainMap | 다중 dict 조회 | 계층 설정값 (기본값 < 사용자값) |
UserDict 등 | 커스터마이징 | 사용자 정의 자료구조 |
1. Counter
from collections import Counter
c = Counter('banana')
print(c)
print(c.most_common(1))
2. defaultdict
from collections import defaultdict
d = defaultdict(list)
d['a'].append(1)
3. deque
from collections import deque
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.pop()
4. namedtuple
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x + p.y)
5. OrderedDict
from collections import OrderedDict
od = OrderedDict()
od['a'] = 1
od['b'] = 2
기본 dict도 순서를 유지하지만, OrderedDict는 순서 비교나 move_to_end 등 추가 기능이 있음.
6. ChainMap
from collections import ChainMap
defaults = {'theme': 'light', 'lang': 'en'}
user = {'theme': 'dark'}
env = {'lang': 'ko'}
merged = ChainMap(user, env, defaults)
print(merged['theme'])
print(merged['lang'])