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() 사용
= dict()
= '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)
= '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연산을 할 수있다.

+ Recent posts