collections 라이브러리

SeongGyun Hong·2024년 10월 16일

Python

목록 보기
5/34

0. collections 라이브러리

파이썬을 하다보면 정말 많이 보이는 라이브러리
import collections...
매번 다시 찾다가 이번 기회에 한번에 정리하려한다.

  • collections 라이브러리란?
    데이터를 효율적으로 처리하고 관리하는데 매우 유용한 라이브러리
    주요 기능들로 defaultdict Counter deque 등이 있다.

1. defaultdict

defaultdict는 딕셔너리의 하위 클래스로, 존재하지 않는 키에 접근할 때 에러 대신 기본값을 반환해줌.

1.1 정의와 주요 기능

  • 키가 없을 때 자동으로 기본값을 생성
  • 인자로 기본값을 생성하는 함수를 받음 (int, list, lambda 등)

1.2 사용 예시

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']})

2. Counter

Counter는 해시 가능한 객체를 세는 데 사용되는 딕셔너리의 하위 클래스

2.1 정의와 주요 기능

  • 요소를 키로, 개수를 값으로 저장
  • most_common() 메서드로 가장 흔한 요소 찾기 가능

2.2 사용 예시

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)]

3. deque

deque는 양쪽 끝에서 빠르게 추가와 삭제를 할 수 있는 양방향 큐

3.1 정의와 주요 기능

  • 양쪽 끝에서의 빠른 추가/삭제 (O(1) 시간 복잡도)
  • rotate() 메서드로 요소 회전 가능

3.2 예시

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는 키 오류를 방지하고 코드를 간결하게 만드는 데 도움이 됩니다.

profile
헤매는 만큼 자기 땅이다.

0개의 댓글