untitled
collections 모듈 심층 가이드: 데이터 처리를 위한 강력한 도구
파이썬의 collections 모듈은 다양한 데이터 구조와 유틸리티를 제공하여 데이터 처리를 훨씬 더 쉽고 효율적으로 만들어줍니다. 이 모듈은 기본 내장 자료형보다 더 강력하고 유연하며, 다양한 상황에 맞게 사용할 수 있습니다.
1. Counter: 데이터 집계 및 분석
Counter 객체는 데이터 집계 및 분석에 매우 유용합니다. 각 항목의 출현 빈도를 쉽게 계산하고, 순위를 매기거나 특정 조건에 맞는 항목을 찾는 데 활용할 수 있습니다. 예시:
- 영화 대사 분석: Python
from collections import Counter
# 대사 목록을 읽어옴
with open("script.txt") as f:
lines = f.readlines()
# 각 단어의 출현 빈도를 계산
words = Counter(line.split() for line in lines)
# 가장 많이 사용된 단어 10개 출력
print(words.most_common(10))
- 학생 성적 분석: Python
from collections import Counter
# 학생 성적 데이터를 읽어옴
grades = [int(line) for line in open("grades.txt")]
# 각 성적 빈도를 계산
grade_counts = Counter(grades)
# A 학점을 받은 학생 비율 계산
print(grade_counts[90] / len(grades))
2. defaultdict: 누락된 키에 대한 기본값 설정
defaultdict 객체는 키가 존재하지 않더라도 기본값을 제공하여 코드를 간결하게 만들 수 있게 합니다. 딕셔너리와 유사하지만, 키가 존재하지 않을 때 KeyError 예외를 발생시키지 않고 기본값을 반환합니다. 예시:
- 주소록 관리: Python
from collections import defaultdict
# 이름을 키로 사용하는 주소록 생성
address_book = defaultdict(list)
# 연락처 추가
address_book["김철수"].append("010-1234-5678")
address_book["박지영"].append("010-2345-6789")
# 특정 이름의 연락처 정보 출력 (존재하지 않더라도 빈 리스트 반환)
print(address_book["이영희"])
- 웹 사이트 방문 횟수 통계: Python
from collections import defaultdict
# URL을 키로 사용하는 방문 횟수 통계 생성
visit_counts = defaultdict(int)
# URL 방문 횟수 업데이트
visit_counts["https://www.google.com"] += 1
visit_counts["https://www.naver.com"] += 1
# 특정 URL 방문 횟수 출력 (존재하지 않더라도 0 반환)
print(visit_counts["https://www.youtube.com"])
3. OrderedDict: 순서 유지 딕셔너리
OrderedDict 객체는 삽입 순서대로 항목을 유지하는 딕셔너리입니다. 일반 딕셔너리는 순서를 보장하지 않지만, OrderedDict는 삽입, 삭제, 변경 순서대로 항목을 반환합니다. 예시:
- 캐시 구현: Python
from collections import OrderedDict
# 최근 사용된 항목을 기록하는 캐시 생성
cache = OrderedDict()
# 항목 추가 (최근 사용된 항목은 앞쪽으로 이동)
cache["item1"] = "value1"
cache["item2"] = "value2"
cache["item3"] = "value3"
# 캐시 용량 제한 (최근 사용되지 않은 항목 삭제)
if len(cache) > 10:
cache.popitem(last=False)
# 캐시 항목 순서대로 출력
for item in cache:
print(item)
- 로그 기록: Python
from collections import OrderedDict
# 로그 메시지를 기록하는 OrderedDict 생성
log = OrderedDict()
# 로그 메시지 추가 (최근 메시지는 앞쪽으로 이동)
log["2023-12-01"] = "INFO: 프로그램 시작"
log["2023-12