파이썬을 하다보면 정말 많이 보이는 라이브러리
import collections...
매번 다시 찾다가 이번 기회에 한번에 정리하려한다.
defaultdict Counter deque 등이 있다.defaultdict는 딕셔너리의 하위 클래스로, 존재하지 않는 키에 접근할 때 에러 대신 기본값을 반환해줌.
from collections import defaultdict
# 정수 기본값 사용
word_count = defaultdict(int)
for word in ["apple", "banana", "apple", "cherry"]:
word_count[word] += 1
print(word_count) # defaultdict(<class 'int'>, {'apple': 2, 'banana': 1, 'cherry': 1})
# 리스트 기본값 사용
fruit_colors = defaultdict(list)
fruit_colors["red"].append("apple")
fruit_colors["yellow"].append("banana")
print(fruit_colors) # defaultdict(<class 'list'>, {'red': ['apple'], 'yellow': ['banana']})
Counter는 해시 가능한 객체를 세는 데 사용되는 딕셔너리의 하위 클래스
from collections import Counter
# 문자열에서 문자 세기
c = Counter("gallahad")
print(c) # Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1})
# 가장 흔한 요소 찾기
print(c.most_common(2)) # [('a', 3), ('l', 2)]
deque는 양쪽 끝에서 빠르게 추가와 삭제를 할 수 있는 양방향 큐
from collections import deque
d = deque(["task1", "task2", "task3"])
d.append("task4") # 오른쪽에 추가
d.appendleft("task0") # 왼쪽에 추가
print(d) # deque(['task0', 'task1', 'task2', 'task3', 'task4'])
d.pop() # 오른쪽에서 제거
d.popleft() # 왼쪽에서 제거
print(d) # deque(['task1', 'task2', 'task3'])
d.rotate(1) # 오른쪽으로 1칸 회전
print(d) # deque(['task3', 'task1', 'task2'])
이러한 collections 라이브러리의 기능들은 데이터를 효율적으로 처리하고 관리하는 데 매우 유용합니다. 특히 defaultdict는 키 오류를 방지하고 코드를 간결하게 만드는 데 도움이 됩니다.