안녕하세요, 파이썬 매니아 여러분! 🎉 오늘은 파이썬의 강력한 도구 중 하나인 defaultdict에 대해 알아보려고 합니다. 파이썬을 사용하다 보면, 종종 기본값을 가진 딕셔너리가 필요할 때가 있죠. 그럴 때 defaultdict가 무대에 등장합니다! ✨
defaultdict란 무엇인가요? 🤔
defaultdict는 파이썬의 collections 모듈에 있는 딕셔너리의 서브클래스입니다. 이 친구의 특별한 점은, 존재하지 않는 키를 조회할 때 요청에 응답으로 기본값을 자동으로 생성해주는 기능을 가지고 있다는 거예요! 🚀
예를 들어, 다음과 같이 딕셔너리를 생성하면, 키가 존재하지 않는 경우 KeyError 예외가 발생합니다.
from collections import defaultdict
d = defaultdict(int)
d['a'] = 1
d['b'] = 2
print(d['c']) # 0
이 예외를 방지하기 위해 defaultdict를 사용할 수 있습니다. 이 경우, 키가 존재하지 않는 경우 기본값으로 0을 지정합니다.
defaultdict의 사용법 🛠️
사용법은 간단합니다. 먼저, collections 모듈에서 defaultdict를 가져와야 해요.
from collections import defaultdict
예제 1️⃣: 단어별 문자 빈도수 딕셔너리 📊
from collections import defaultdict
# defaultdict 생성 (단어 -> 문자 -> 빈도수)
d = defaultdict(lambda: defaultdict(int))
# 단어 리스트를 순회하며 문자 빈도수 측정
for word in ["hello", "world", "python"]:
for char in word:
d[word][char] += 1
print(d)
이 스마트 코드는 🧙♂️ 다음과 같은 데이터 구조를 마법처럼 생성해요:
{
'hello': {'h': 1, 'e': 1, 'l': 2, 'o': 1},
'world': {'w': 1, 'o': 1, 'r': 1, 'l': 1, 'd': 1},
'python': {'p': 1, 'y': 1, 't': 1, 'h': 1, 'o': 1, 'n': 1}
}
여기서 d['hello']는 "hello"라는 단어의 각 문자 빈도를 저장하는 사전이며 📖, d['hello']['h']는 "h" 문자의 출현 횟수를 나타내죠 📈.
예제 2️⃣: 날짜별 날씨 정보 딕셔너리 ☀️🌧️
파이썬의 defaultdict를 사용하면 날짜별로 날씨 정보를 저장하는 복잡한 데이터 구조도 쉽게 관리할 수 있습니다. 아래는 이를 활용한 예제 코드입니다:
from collections import defaultdict
# defaultdict 생성 (날짜 -> 날씨 정보 리스트)
weather_info = defaultdict(lambda: defaultdict(list))
# 날짜와 날씨 데이터를 순회하며 정보 저장
for date, weather in [
('2023-07-20', '맑음'),
('2023-07-20', '흐림'),
('2023-07-20', '비'),
('2023-07-21', '맑음'),
('2023-07-21', '구름 조금'),
]:
weather_info[date].append(weather)
print(weather_info)
실행 결과는 다음과 같은 구조를 가진 딕셔너리를 만들어냅니다:
{
'2023-07-20': ['맑음', '흐림', '비'],
'2023-07-21': ['맑음', '구름 조금']
}
여기서 weather_info['2023-07-20']는 2023년 7월 20일의 날씨 정보를 저장하는 리스트이며, 각각의 날씨 상태를 순차적으로 담고 있습니다. 🌦️
이 구조를 사용하면, 주어진 날짜에 대한 날씨 정보가 없을 경우 자동으로 빈 리스트를 기본값으로 할당하므로, 새로운 날 정보를 추가할 때 별도의 초기화 코드 없이 바로 리스트에 추가할 수 있습니다. 이는 코드를 더욱 깔끔하고 오류를 줄일 수 있는 방법입니다. 🚀
예를 들어, 다음과 같이 날짜별로 날씨 상태를 추가하고 싶다면:
# '2023-07-22' 날짜에 대한 날씨 정보 추가
weather_info['2023-07-22'].append('구름 많음')
weather_info['2023-07-22'].append('가능성 있는 소나기')
이렇게 defaultdict를 사용하면, '2023-07-22'라는 새로운 키에 자동으로 빈 리스트가 할당되고, 그 리스트에 날씨 정보가 추가됩니다. 결과적으로 weather_info 딕셔너리는 다음과 같이 업데이트됩니다:
{
'2023-07-20': ['맑음', '흐림', '비'],
'2023-07-21': ['맑음', '구름 조금'],
'2023-07-22': ['구름 많음', '가능성 있는 소나기']
}
이렇게 defaultdict를 활용하면, 복잡한 데이터를 쉽고 효율적으로 관리할 수 있어서, 데이터를 다루는 파이썬 프로그래머에게 매우 유용한 도구가 됩니다. ⛅🌈👍
'프로그래밍 언어(Programming Languages) > 파이썬(Python)' 카테고리의 다른 글
[Python] 🔑 파이썬 딕셔너리 마스터하기: 데이터 접근의 모든 것! 🚀 (28) | 2023.11.19 |
---|---|
[Python] 파이썬 리스트에서 요소를 효과적으로 삭제하는 법 🧹 (22) | 2023.11.18 |
[Redis] Redis 파이썬 클래스 - 메모리 내 데이터 처리의 마법✨ (23) | 2023.11.16 |
[Python] 🎒 Python의 컬렉션 상자들: 어떤 상자를 언제 써야 할까요? 📦 (29) | 2023.11.15 |
[Python] 🧙♂️✨ 빅데이터 저장 공간 최적화: Parquet의 압축 기능과 CSV 비교 (3) | 2023.11.14 |