반응형
Python에서 setdefault()
와 defaultdict()
활용하기
Python에서 딕셔너리를 사용할 때 키가 이미 존재하거나 존재하지 않을 때의 동작을 처리하는 방법은 중요합니다. 이 글에서는 setdefault()
와 defaultdict()
를 활용해 효율적으로 딕셔너리를 다루는 방법을 알아보고, 코드 예제를 통해 차이점과 사용 사례를 설명하겠습니다.
setdefault()란?
dict.setdefault()
는 딕셔너리에서 키를 조회할 때, 해당 키가 없으면 지정된 기본값을 추가하고 반환하는 메서드입니다. 키가 이미 존재하면 기존 값을 반환합니다.
문법
dict.setdefault(key, default=None)
key
: 조회할 키default
: 키가 없을 경우 삽입할 기본값 (기본값은None
)
사용 예제
# 예제: 학생 점수 관리
scores = {"Alice": 90, "Bob": 85}
# 기존 키 조회
print(scores.setdefault("Alice", 100)) # 출력: 90
# 없는 키 추가
print(scores.setdefault("Charlie", 75)) # 출력: 75
print(scores) # 출력: {'Alice': 90, 'Bob': 85, 'Charlie': 75}
- 장점: 키가 없는 경우 동시 삽입 및 조회가 가능합니다.
- 주의점: 키가 없으면 기본값이 항상 추가됩니다.
defaultdict()란?
collections.defaultdict
는 딕셔너리를 생성할 때, 기본값을 반환하는 함수를 지정하여 키가 없을 경우 자동으로 기본값을 생성해주는 클래스입니다.
문법
from collections import defaultdict
defaultdict(default_factory)
default_factory
: 기본값을 생성하는 함수 (예:int
,list
,set
등)
사용 예제
from collections import defaultdict
# 기본값이 리스트인 defaultdict 생성
grouped_items = defaultdict(list)
# 값 추가
grouped_items["fruits"].append("apple")
grouped_items["fruits"].append("banana")
grouped_items["vegetables"].append("carrot")
print(grouped_items)
# 출력: {'fruits': ['apple', 'banana'], 'vegetables': ['carrot']}
- 장점: 키를 미리 확인하거나 초기화하지 않아도 됩니다.
- 주의점: 모든 키의 기본값은 동일한
default_factory
를 사용합니다.
setdefault()
와 defaultdict()
의 차이점
특성 | setdefault() |
defaultdict() |
---|---|---|
동작 방식 | 키가 없을 때 기본값을 추가 | 키가 없을 때 자동으로 기본값 생성 |
기본값 추가 | 메서드 호출 시 지정 | 초기화 시 default_factory 로 지정 |
사용 시점 | 키를 조건부로 추가해야 할 때 | 키-값 쌍을 동적으로 관리할 때 |
두 방법의 활용 사례
setdefault()
를 활용한 키별 초기화
# 문자 개수 세기
text = "hello world"
char_count = {}
for char in text:
if char != " ":
char_count.setdefault(char, 0)
char_count[char] += 1
print(char_count)
# 출력: {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1}
defaultdict()
를 활용한 키별 리스트 관리
from collections import defaultdict
# 데이터 분류
data = [("fruit", "apple"), ("fruit", "banana"), ("vegetable", "carrot")]
grouped_data = defaultdict(list)
for category, item in data:
grouped_data[category].append(item)
print(grouped_data)
# 출력: {'fruit': ['apple', 'banana'], 'vegetable': ['carrot']}
언제 사용해야 할까?
setdefault()
: 단일 키에 대한 조건부 초기화가 필요한 경우.defaultdict()
: 동일한 기본값으로 다수의 키를 처리해야 하는 경우.
이 두 가지 방법을 적절히 활용하면 코드의 가독성과 효율성을 크게 향상시킬 수 있습니다. 필요에 따라 상황에 맞는 방식을 선택하면 됩니다.
반응형
'Language > Python' 카테고리의 다른 글
python exception 일반적인 처리 방식과 Contextlib.suppress와의 차이 (0) | 2024.12.07 |
---|---|
Python 정적 코드 분석 도구: MyPy와 PyType 비교 (0) | 2024.12.05 |
Json Schema를 사용한 Json 유효성 검사하기 (0) | 2024.04.06 |
[numpy] r_, c_ 함수에 대하여 (0) | 2023.12.02 |
[Python] Sliding Window (0) | 2023.08.24 |