Computer/Programming

Python defaultdict 조심할 것

holycall 2021. 8. 10. 11:11

python defaultdict는 key가 있는지 확인하는 if문을 사용하지 않기 때문에 편리하다. 그런데 key를 access 하면 자동으로 그 key가 생기기 때문에 조심스럽게 사용해야 한다. 

from collections import defaultdict
dd = defaultdict(list)
dd[1].append(1)
dd[2].append(1)
dd[3].append(2)
dd[1].append(1)
dd

Out[21]: defaultdict(list, {1: [1, 1], 2: [1], 3: [2]})

check_key = [1,2,3,4]
for k in check_key:
    if k in dd:
        print(k, dd[k])
1 [1, 1]
2 [1]
3 [2]
dd
Out[24]: defaultdict(list, {1: [1, 1], 2: [1], 3: [2]})

for k in check_key:
    print(k, dd[k])
1 [1, 1]
2 [1]
3 [2]
4 []

dd
Out[26]: defaultdict(list, {1: [1, 1], 2: [1], 3: [2], 4: []})

존재 하지 않는 key에 대한 access를 시도하게 되면 default 값이 들어가 버린다.