본문 바로가기
프로그래밍언어/파이썬[중급]

[파이썬][중급] Chapter14. collections 모듈 (deque, Counter 등)

by about_IT 2025. 5. 18.
728x90

파이썬의 collections 모듈은 기본 자료형을 보완한 고급 자료 구조들을 제공합니다. 특히 deque, Counter, defaultdict, OrderedDict, namedtuple은 알고리즘과 실무 프로그래밍에서 자주 사용되는 유용한 도구입니다.


● deque (덱)

deque는 양쪽 끝에서 빠르게 삽입과 삭제가 가능한 자료 구조입니다. 일반 리스트에 비해 앞쪽에서의 연산이 훨씬 빠릅니다.

from collections import deque

dq = deque([1, 2, 3])
dq.append(4)         # 오른쪽 추가
dq.appendleft(0)     # 왼쪽 추가
dq.pop()             # 오른쪽 제거
dq.popleft()         # 왼쪽 제거

● Counter

Counter는 각 요소의 등장 횟수를 쉽게 계산할 수 있는 딕셔너리 서브클래스입니다.

from collections import Counter

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

리스트, 문자열, 튜플 등 반복 가능한 자료형을 넣을 수 있으며, .most_common(n) 메서드로 빈도 상위 항목도 추출할 수 있습니다.


● defaultdict

defaultdict는 기본값을 자동으로 설정할 수 있는 딕셔너리입니다. 존재하지 않는 키에 접근할 경우 기본값을 자동으로 생성합니다.

from collections import defaultdict

dd = defaultdict(int)
dd['a'] += 1
print(dd['a'])  # 1
print(dd['b'])  # 0 (자동 생성)

● namedtuple

namedtuple은 튜플에 이름을 부여하여 속성처럼 접근할 수 있게 해줍니다. 데이터 구조를 정의하는 데 유용합니다.

from collections import namedtuple

Point = namedtuple("Point", ["x", "y"])
p = Point(1, 2)
print(p.x, p.y)  # 1 2

● 마무리

collections 모듈은 성능과 코드 가독성을 모두 향상시킬 수 있는 고급 자료구조를 제공합니다. 알고리즘 문제 해결이나 실제 업무 로직에서 매우 유용하므로 적극적으로 활용해보시기 바랍니다.

728x90