Lim Seunghyun Space

defaultdict 본문

Python/Python 공부

defaultdict

Lim Seung Hyun 2022. 5. 31. 09:22

개요

  • 딕셔너리에 없는 키에 접근할 때 특정 기본값을 지정해주기 위해 사용
  • defaultdict는 collections안에 구현

 

생성 방법

from collections import defaultdict

sample = defaultdict() # defaultdict에 default 값을 지정해주지 않으면 없는 key 접근시 KeyError가 발생한다.
# print(sample["one"]) >> KeyError 발생

default = dict
sample2 = defaultdict(default) # defaultdict(Default Value) # Default Value는 무조건 callable 해야한다.
print(sample2["one"])
  •  defaultdict(default)으로 생성하며 default가 비어있는 경우 나중에 KeyError 가 발생
  • default로 지정해줄시 해당 기본값은 callable 해야한다.
    • callable이란 
      • 객체에 __call__ 이 구현되어 있어 호출이 가능한 형태
      • list, dict 등이 callable 하며 사용자 클래스 내부에도 __call__ 만 구현되어 있으면 callable 해지며 defaultdict에서 default로 사용할 수 있다.
      • callable(대상) : 대상이 callable한지 판단 (callabe 하면 True / 아니면 False)

 

키 작동 방식

  • 해당 키가 있는지 확인
  • 있으면 해당 키와 매핑된 값을 리턴
  • 없으면 
    • default_factory 을 호출하여 기본값 생성
    • 생성한 기본값을 해당 키와 매핑

 

주의

  • defaultdict은 dict[key] 와 같은 __getitem__ 에 대한 기본값 제공을 위해 호출되며 in을 사용하는 __contain__ 이나 get()에는 영향을 미치지 않는다
728x90