일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- yarn
- scrapy
- recursion
- RNN
- 그래프이론
- python
- graph
- C
- effective python
- 파이썬
- C언어
- 선형대수
- 알고리즘
- Sort
- 딥러닝
- 하둡2
- collections
- HelloWorld
- codingthematrix
- NumPy
- Java
- hive
- 주식분석
- 하이브
- LSTM
- tensorflow
- hadoop2
- GRU
- 코딩더매트릭스
- 텐서플로
- Today
- Total
EXCELSIOR
collections 모듈 - defaultdict 본문
collections.defaultdict
1. defaultdict란
collections.defaultdict
는 딕셔너리(dictionary
)와 거의 비슷하지만 key값이 없을 경우 미리 지정해 놓은 초기(default)값을 반환하는 dictionary
이다. defaultdict
과 관련하여 자세한 내용은 docs.python.org에서 확인할 수 있다.
예제의 소스코드를 통해 dict
(기본 딕셔너리)와 defaultdict
를 비교해보면, 예제(1-1)에서 기본 딕셔너리는 해당 키가 없는 값을 출력할 경우 KeyError
Exception 에러가 나타난다. 반면에 예제(1-2)에서 defaultdict
는 default_factory()
라는 함수로 초기값(default)를 null로 지정해줬기 때문에 해당 키가 없는 값을 출력할 경우 초기값인 null 이 출력된다.
2. defaultdict의 인자(factor)
collections.defaultdict(default_factory, key=value,...)
는 default_factory 와 defaultdict
의 초기값을 지정하는 인자이다. 예제(2-1)에서 default_factory 인자를 넣어주지않으면 기본 딕셔너리와 마찬가지로 KeyError
Exception 에러가 난다.
default_factory인자는 메소드 형태의 값을 인자로 받는데, list(), int(), set()...
나 사용자가 직접 메소드를 생성할 수 있다. 예제(3)은 default_factory를 list(), int(), set()
로 지정했을 때의 초기값을 출력하는 예제이다.
3. dict.setdefault vs defaultdict
기본 딕셔너리(dict)에서도 defaultdict의 default_factory
와 같은 기능을 하는 메소드인 setdefault
를 통해 초기값을 지정할 수 있도록 제공한다. 하지만, docs.python.org에서도 확인할 수 있듯이 defaultdict
의 default_factory
가 더 간단하고, 더 빠르다. 예제(4)는 dict.setfault()
와 defaultdict
의 default_factory
를 이용하여 리스트(s)의 원소 개수를 구하는 코드이다. 물론 이방법은 앞의 collections.Counter()
를 사용하면 한줄로 구현이 가능하다.
'Python > 자료구조' 카테고리의 다른 글
내장함수 zip() 과 itertools.zip_longest() 함수 (0) | 2017.09.21 |
---|---|
collections 모듈 - OrderedDict (0) | 2017.09.07 |
collections 모듈 - namedtuple (5) | 2017.08.22 |
collections 모듈 - deque (3) | 2017.08.20 |
collections 모듈 - Counter (7) | 2017.08.17 |