본문 바로가기
프로그래밍/Python

파이썬(Python) - 딕셔너리의 키가 없는 경우 기본값(디폴트값) 설정하기 (feat. setdefault, defaultdict)

by 부자 꽁냥이 2022. 9. 29.

딕셔너리는 파이썬(Python)에서 많이 이용하는 객체로 키(Key)와 값(Value) 쌍으로 이루어져 있다는 특징이 있다. 파이썬(Python)에서는 그 중에서 딕셔너리에 포함되지 않은 키(Key)가 있는 경우 해당 키에 대한 기본 값을 설정할 수 있는 setdefault, defaultdict가 있다. 이번 포스팅에서는 setdefault, defaultdict의 사용법을 알아보려고 한다.


   setdefault, defaultdict 사용법

1) setdefault

setdefault 함수는 첫 번째 인자가 기존 딕셔너리 키에 포함되지 않는다면 새로운 키를 생성한 뒤 두 번째 인자를 값으로 설정한다. setdefault 사용법은 아래와 같다.


setdefault( 키, 값 )


아래 코드를 통하여 setdefault 사용법을 익혀보자. 아래 코드는 기존 딕셔너리 dict_test에 'C'라는 키가 존재하는지 살펴보고 만약 없다면 'C'를 새로운 키로 15를 이에 대응하는 값으로 설정한다. 이때 setdefault는 두 번째 인자로 들어온 값을 반환한다.

 

dict_test = {'A':10, 'B':20}
print(dict_test)
## 'C'라는 키가 없으므로 새로운 키 'C'가 생성되고 값은 15로 설정되어 이를 반환
print(dict_test.setdefault('C',15)) 
print(dict_test)

 

setdefault를 이용하여 새로운 키 추가

보는 바와 같이 새로운 키 'C'와 이에 대응하는 값 15가 추가된 것을 알 수 있다.

만약 키가 이미 존재하면 어떻게 될까?

이 경우 해당 키에 대한 원래의 값이 반환만 되고 실제로 아무것도 변하지 않는다.

 

print(dict_test)
## 'A'라는 키는 이미 있으므로 기존 딕셔너리는 바뀌지 않으며 'A'가 갖고 있는 10을 반환한다.
print(dict_test.setdefault('A', 27)) 
print(dict_test)

 

setdefault는 기존에 키가 있다면 아무것도 하지 않는다.


2) defaultdict

defaultdict도 기존에 키가 없는 경우 기본값을 할당한다는 의미에서 setdefault와 비슷한 역할을 한다. 다른 점은 collections 모듈에 있다는 것과 개별 키가 아닌 모든 키에 대하여 값을 설정한다는 것이다. 또한 defaultdict는 호출 가능한 함수를 인자로 받는다는 점이 setdefault와 다른 점이다.

 

from collections import defaultdict

def default_value_for_new_key():
    return 'HaHa'

dict_test = defaultdict(default_value_for_new_key) ## 기본 값을 'HaHa'로 설정
dict_test['A'] = 10 ## 키(Key)는 'A' 값은 10
dict_test['B'] = 30 ## 키(Key)는 'A' 값은 10

print(dict_test) ## defaultdict 객체
print(dict_test['A']) ## 'A'키는 존재하므로 값 10 출력
print(dict_test['B']) ## 'B'키는 존재하므로 값 30 출력
print(dict_test['C']) ## 'C'키는 존재하지 않으므로 기본 값을 'HaHa' 출력

 

 

defaultdict 객체는 일반 딕셔너리와 같이 기존 키에 대한 값을 변경할 수 있다.

 

dict_test['A'] = 40 ## A키 값을 40으로 변경
print(dict_test['A'])

 


댓글


맨 위로