[공식문서] https://docs.python.org/3.3/library/collections.html#collections.defaultdict
[참고] https://excelsior-cjh.tistory.com/95?category=966334
from collections import defaultdict
없는 key에 접근할 경우 에러 처리를 위해 지정한 기본값으로 초기화
기본적으로 없는 key에 접근하는 경우 KeyError Exception 발생
dict = defaultdict(a=1, b=2)
print(dict) # defaultdict(None, {'a': 1, 'b': 2})
print(dict['c']) # KeyError: 'c'
사용자가 직접 정의한 메서드나 list(), set()등의 메서드로 정의되지 않은 키값에 대해 기본값 설정 가능
def default_factory():
return 'null'
dict = defaultdict(default_factory, a=1, b=2)
print(dict['c']) # null
- 원래 없던 key인 c에 접근할 때 default_factory(사용자 지정 함수)에서 지정한 null로 출력
ex_list = defaultdict(list, a=[1,2], b=[3,4])
print(ex_list) # defaultdict(<class 'list'>, {'a': [1, 2], 'b': [3, 4]})
print(ex_list['c']) # []
- 기본값을 list로 지정하여 정의되지 않은 키에 접근할 경우 리스트[]로 출력
ex_set = defaultdict(set, a={1,2}, b={3,4})
print(ex_set) # defaultdict(<class 'set'>, {'a': {1, 2}, 'b': {3, 4}})
print(ex_set['c']) # set()
- 기본값을 set으로 지정하여 정의되지 않은 키에 접근할 경우 집합[]으로 출력
ex_int = defaultdict(int, a=1, b=2)
print(ex_int) # defaultdict(<class 'int'>, {'a': 1, 'b': 2})
print(ex_int['c']) # 0
- 기본값을 int로 지정하여 정의되지 않은 키에 접근할 경우 0으로 출력
키와 값 하나를 인자로 받는 dictionary 메서드로 값이 있다면 해당 값을 없다면 두번째 인자 반환
list_ = ['a', 'b', 'c', 'b', 'a', 'b', 'c']
dict_ = {}
for k in list_:
dict_.setdefault(k, 0)
dict_[k] += 1
print(list(dict_.items()))
list_ = ['a', 'b', 'c', 'b', 'a', 'b', 'c']
1) dict.setdefault()
dict_ = {}
for k in list_:
dict_.setdefault(k, 0)
dict_[k] += 1
2) collections.defaultdict()
dict_ = collections.defaultdict(int)
for k in list_:
dict_[k] += 1
3) collections.couter()
c_dict = collections.Counter(list_)
[PYTHON] 파이썬 collections 모듈(3) deque (0) | 2021.10.30 |
---|---|
[PYTHON] 파이썬 collections 모듈(2) Counter (0) | 2021.10.30 |
[DJANGO] 파이썬의 list 자바스크립트에서 array로 받기 (0) | 2021.08.12 |
[PYTHON] pickle(.pkl) 데이터 저장 및 불러오기 (0) | 2021.07.16 |
[PYTHON] smtplib 이용한 간단한 Gmail 발송 (0) | 2021.06.28 |
댓글 영역