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
'파이썬(Python) 공부' 카테고리의 다른 글
학습 진행 상황 나타내기 (0) | 2023.08.24 |
---|---|
파이썬 sys 모듈에 대해 알아보자 (0) | 2023.08.23 |
JSON 인코딩과 디코딩 (0) | 2023.07.20 |
math 라이브러리 (0) | 2023.07.20 |
이진 탐색을 위한 파이썬 bisect 모듈 (0) | 2023.07.20 |