728x90

collections 모듈은 파이썬의 내장 컨테이너 dict, list, set, tuple와 같은 자료형을 보완하고 확장하여 더 풍부한 기능을 제공한다.

 

1. Counter: 요소의 개수를 세는 기능을 제공한다. 리스트나 문자열과 같은 반복 가능한 객체를 입력으로 받아 개별 요소의 빈도를 세어 딕셔너리 형태로 반환한다.

from collections import Counter

words = ["apple", "banana", "apple", "orange", "banana", "apple"]
word_counts = Counter(words)

print(word_counts)  # Counter({'apple': 3, 'banana': 2, 'orange': 1})
print(word_counts['apple'])  # 3
print(word_counts.most_common(2))  # [('apple', 3), ('banana', 2)]

 

2. defaultdict: 일반 딕셔너리와 비슷하지만, 존재하지 않는 키를 사용하더라도 에러가 아닌 지정된 기본값을 반환한다.

주로 'int', 'list', 'dict'와 같은 내장 데이터 타입을 기본값으로 사용한다.

from collections import defaultdict

# defaultdict을 사용하여 int 기본값을 갖는 사전 생성
fruit_counts = defaultdict(int)

fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]

for fruit in fruits:
    fruit_counts[fruit] += 1

print(fruit_counts)  # defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1})
print(fruit_counts['apple'])  # 3
print(fruit_counts['grape'])  # 0 (존재하지 않는 키에 접근)

3. deque: double-ended queue는 양쪽 끝에서 데이터를 추가하거나 삭제할 수 있는 큐와 스택의 특징을 모두 가진 자료 구조이다. 큐와 스택 모두의 장점을 활용하여 효율적인 데이터 조작이 가능하다.

from collections import deque

# 덱 생성
my_deck = deque([1, 2, 3, 4, 5])

my_deck.append(6)  # 오른쪽에 요소 추가
my_deck.appendleft(0)  # 왼쪽에 요소 추가

print(my_deck)  # deque([0, 1, 2, 3, 4, 5, 6])
print(my_deck.pop())  # 6
print(my_deck.popleft())  # 0
print(my_deck)  # deque([1, 2, 3, 4, 5])

 

4. namedtuple(): 이름이 지정된 튜플을 생성하는 데 사용된다. 필드명으로 요소에 접근할 수 있다.

from collections import namedtuple

# 명명된 튜플 정의
Person = namedtuple("Person", ["name", "age", "city"])

person1 = Person("Alice", 30, "New York")
person2 = Person("Bob", 25, "San Francisco")

print(person1.name)  # Alice
print(person2.city)  # San Francisco

 

728x90

+ Recent posts