파이썬 Collections 라이브러리 사용법 - deque, Counter 등

728x90
파이썬 Collections 라이브러리 자세히 알아보기

파이썬 Collections 라이브러리 자세히 알아보기

파이썬의 collections 모듈은 고급 데이터 구조를 제공하여 개발자가 다양한 상황에서 데이터를 더 쉽게 관리할 수 있도록 도와줍니다. 뿐만 아니라, 대부분의 코딩테스트에서 활용할 수 있는 모듈이기 때문에 사용법을 잘 익혀두면 많은 도움이 됩니다. 따라서 이번 글에서는 collections 모듈에 포함된 주요 클래스들에 대해 알아보고, 예제 코드와 함께 각 클래스의 사용법을 단계별로 자세히 설명하겠습니다.

1. Counter

Counter는 요소의 개수를 셀 때 유용한 클래스로, 주어진 iterable 객체의 요소들을 딕셔너리 형태로 저장하면서 그 개수를 세줍니다.

from collections import Counter

# 예제: 리스트의 요소 개수 세기
data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
count = Counter(data)
print(count)

출력 결과:

Counter({'apple': 3, 'banana': 2, 'orange': 1})

Counter는 데이터를 쉽게 분석하고 빈도수를 파악할 때 매우 유용합니다.

2. defaultdict

defaultdict는 키가 존재하지 않을 때 기본값을 자동으로 설정할 수 있는 딕셔너리입니다. 일반적인 딕셔너리에서는 존재하지 않는 키에 접근할 때 에러가 발생하지만, defaultdict를 사용하면 기본값을 반환합니다.

from collections import defaultdict

# 예제: 기본값이 0인 딕셔너리 생성
default_dict = defaultdict(int)
default_dict['apple'] += 1
print(default_dict)

출력 결과:

defaultdict(<class 'int'>, {'apple': 1})

defaultdict는 키가 존재하지 않을 때 기본값을 쉽게 설정하여 코드의 간결성과 안전성을 높여줍니다.

3. OrderedDict

OrderedDict는 입력된 순서를 유지하는 딕셔너리입니다. 파이썬 3.7 이후의 기본 딕셔너리도 순서를 유지하지만, 이전 버전이나 명시적인 사용을 원할 때 유용합니다.

from collections import OrderedDict

# 예제: 순서를 유지하는 딕셔너리 생성
d = OrderedDict()
d['banana'] = 3
d['apple'] = 5
d['orange'] = 2
print(d)

출력 결과:

OrderedDict([('banana', 3), ('apple', 5), ('orange', 2)])

OrderedDict를 사용하면 데이터의 순서를 유지하면서 작업할 수 있어 직관적인 데이터 처리가 가능합니다.

4. namedtuple

namedtuple은 튜플의 서브클래스로, 이름으로 필드에 접근할 수 있게 해줍니다. 보통 튜플은 인덱스로 접근하지만, namedtuple을 사용하면 더 가독성 있는 코드를 작성할 수 있습니다.

from collections import namedtuple

# 예제: 이름을 갖는 튜플 생성
Point = namedtuple('Point', ['x', 'y'])
point = Point(10, 20)
print(point.x, point.y)

출력 결과:

10 20

namedtuple은 구조화된 데이터를 더 명확하게 표현하고 관리하는 데 매우 유용합니다.

5. deque

deque는 양쪽 끝에서 빠르게 삽입과 삭제를 할 수 있는 양방향 큐입니다. 리스트보다 효율적인 방식으로 큐 연산을 수행할 수 있어 성능상 유리합니다.

from collections import deque

# 예제: deque 사용하기
deque_list = deque(['a', 'b', 'c'])
deque_list.append('d')
deque_list.appendleft('z')
print(deque_list)

출력 결과:

deque(['z', 'a', 'b', 'c', 'd'])

deque를 사용하면 양쪽 끝에서의 데이터 추가와 삭제가 리스트보다 훨씬 효율적이므로 큐 구조가 필요한 상황에서 매우 유용합니다.

마무리

이번 글에서는 파이썬의 collections 모듈에 포함된 주요 클래스들인 Counter, defaultdict, OrderedDict, namedtuple, deque에 대해 살펴보았습니다. 이 클래스들은 복잡한 데이터 구조를 보다 쉽고 직관적으로 다룰 수 있도록 도와주기 때문에, 다양한 상황에서 유용하게 사용할 수 있습니다. 각 클래스의 특성을 잘 이해하고, 필요에 따라 적절히 사용하여 파이썬 코드를 더욱 효율적으로 작성해보세요!

728x90