defaultdict()는 collections 외부 라이브러리를 호출하면 사용 가능한 함수이다.
기본 dict() 사전형과 다르게 선언하지 않은 key값을 참조해도 에러가 나지않고 default로 정의된 값을 호출한다.
1.
|
1
2
3
4
5
6
|
dd1 = defaultdict(lambda: 'alpha')
dd2 = defaultdict(lambda: 5)
dd3 = defaultdict(lambda: [1,2,3]) print(dd1[1])
print(dd2['a'])
## dd1[1] = alpha
## dd2['a'] = 5
## dd3 = [1, 2, 3] |
cs |
기본 사용법은 () 안에 자료형을 넣는다. int를 넣을경우 default값이 0으로 정의된다.default값을 원하는 값으로 설정하고 싶으면 lambda: 를 붙이고 문자, 숫자, 리스트 까지도 사용할 수 있다.자료형별 기본값으로는 int는 0, list는 [ ]이다.
2.
아래 예시를 통해 defaultdict의 장점을 알아보자.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
## dict() 사용
d = dict()
s = 'aabccbe'
for i in s:
if i not in d:
d[i] = 1
else:
d[i] += 1
print(list(d.items()))
## defaultdict() 사용
dd = defaultdict(lambda: 0)
s = 'aabccbe'
for i in s:
dd[i] += 1
print(list(dd.items()))
## 결과: 둘다 [('a', 2), ('b', 2), ('c', 2), ('e', 1)]로 동일하다. |
cs |
3.
|
1
2
3
4
5
6
7
8
9
10
|
d_int = defaultdict(int)
d_int[1] = 10
d_int[2].append(20) ## 에러 발생
d_list = defaultdict(list)
d_list[1] = 123 ## 기본형은 []이지만, int 형 값도 넣을 수 있다
d_list['나라'].append(['한국'])
print(d_list['나라']) ## [['한국']]
d_list['나라'].append(['일본'])
print(d_list['나라']) ## [['한국'], ['일본']]
|
cs |
defaultdict(list)를 사용하는 좋은 예시이다.
기본형이 [ ]이기 때문에 append연산을 할 수있다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
| [int, int.....] 이 주어졌을 때, 만들 수 있는 모든 경우의 수 (0) | 2021.08.28 |
|---|