Python collections

김신영·2025년 5월 1일

Python

목록 보기
5/10
post-thumbnail

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, UserStringdict, list, string을 상속하여 커스텀 자료구조 만들기 용도자료구조 확장, validation 로직 삽입

클래스주요 기능사용 예
Counter빈도수 계산단어/문자 세기
defaultdict기본값 자동 초기화그룹핑, 누적 리스트/셋 처리
deque빠른 양방향 큐슬라이딩 윈도우, 큐
namedtuple필드 이름이 있는 튜플구조체 대용
OrderedDict순서 유지순서 민감한 딕셔너리
ChainMap다중 dict 조회계층 설정값 (기본값 < 사용자값)
UserDict커스터마이징사용자 정의 자료구조

1. Counter

from collections import Counter

c = Counter('banana')
print(c)  # {'a': 3, 'n': 2, 'b': 1}
print(c.most_common(1))  # [('a', 3)]

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()  # 3

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'])  # 'dark'
print(merged['lang'])   # 'ko'
profile
Hello velog!

0개의 댓글