본문 바로가기
Data Engineering/파이썬

파이썬 올바른 딕셔너리 사용법: get, setdefault, defaultdict (파이썬 클린 코드 #2)

by 무언가 하는 소소 2022. 10. 10.
728x90
반응형

 

 

전편

2022.10.07 - [Data Engineering/파이썬] - 파이썬 클린 코드 #1: enumerate, with, is, R-String, F-String

 

전편에 이은 파이썬 클린코드, 오늘은 딕셔너리 편이다.

 

 

파이썬 딕셔너리 사용 가이드

 

1. get()과 setdefault()를 쓰기

딕셔너리에서 키를 통해 밸류에 접근하는 법은 get()을 쓰는 법과 []를 쓰는 법 두가지가 있다. 하지만 []를 쓰면 해당하는 키다 없는 경우에는 KeyError가 뜨게된다. 하지만 get()을 쓰면 키가 없을 때 반환할 밸류를 설정할 수 있다. 아래 코드는 'cat'이라는 키가 딕셔너리에 없을 경우 0을 반환한다. 

# get(key, defulat value)
numOfCat = numOfAnimal.get('cat', 0)

 

setdefault() 함수를 사용하면 딕셔너리에 키 존재 여부를 판단 후 키가 없을 때 디폴트 밸류를 가지도록 설정할 수 있다. 아래 코드는 딕셔너리가 'cat'이라는 키를 가지고 있으면 아무 동작도 안하지만 키가 없으면 'cat'이라는 키를 생성한 후 밸류를 0으로 설정한다. 

# setdefault(key, defulat value)
numOfCat = numOfAnimal.setdefault('cat', 0)

 

 

2. collection의 defaultdict 사용하기 

get()이나 setdefault()를 쓰지 않고도 KeyError를 없앨 수 있는 방법이 있다. collections 모듈의 defaultdict을 사용하는 것이다. defaultdict 타입의 딕셔너리를 생성하면 생성당시 건네준 밸류의 타입에 따라 모든 키에 대해 자동으로 티폴트 값이 정해진다.

아래 코드는 defaultdict을 사용하는 예시로 딕셔너리 생성 때 int 값을 타입으로 넘겨준다. 그러면 모든 키에 대해 0이 디폴트 값으로 설정된다. 

from collections import defaultdict
# defaultdict(type)
numOfAnimal = defaultdict(int)
numOfAnimal['cat'] += 10
print(numOfAnimal['cat'])
>> 10
print(numOfAnimal['dog']
>> 0

 

 

다음편

☞ 

728x90
반응형

댓글