Programming Languages/Python

[Python] defaultdict 문법 정리

minjiwoo 2022. 9. 11. 09:22
728x90

defaultdict 

Python의 collections 모듈에 defaultdict이 있다.

코딩테스트 풀때, 딕셔너리가 필요한 문제 풀 때 굉장히 편리하다 
일반 딕셔너리는 key 값을 미리 넣어주지 않았다면 value에 대한 연산을 할 때 KeyError 에러가 난다. 

words = ["apple", "apple", "iphone", "mac", "mac", "mac"]
dict_temp = {}
dict_temp[words[0]] += 1


그렇다보니 defaultdict을 모르기 이전에는 이런식으로 코드를 짠 것 같다 

for word in words:
    if word in dict_temp.keys():
        dict_temp[word] += 1
    else:
        dict_temp[word] = 1

이런 번거로움을 덜어주는 게 바로 defaultdict인데, key 호출과 동시에 미리 지정한 기본값이 할당된다. 

words = ["apple", "apple", "iphone", "mac", "mac", "mac"]
d_dict = collections.defaultdict(int) # int type으로 초기화
d_dict[words[0]] += 1
print(d_dict)

기존에 없던 key를 호출할 때 문제없이 연산이 진행되는 걸 확인할 수 있다. 이 경우 int로 초기화 했을 때, 0이 default값으로 저장된다. 
int이외의 다른 type도 가능하다 

예를 들어서 list type의 경우

d_dict = collections.defaultdict(list) # int type으로 초기화
d_dict["apple"].append(1)
print(d_dict)

defaultdict(<class 'list'>, {'apple': [1]})

이렇게 잘 들어간다 !!! 


lambda 식을 이용하여 defaultdict을 초기화할 수도 있다. 

d_dict = collections.defaultdict(lambda: "hello") # int type으로 초기화
print(d_dict[1])

hello

728x90