728x90
반응형

딕셔너리(dictionary) 생성 & 초기화

 

 

파이썬에서 딕셔너리를 생성하고 iterable하게 값을 넣어주고 싶을 때가 있는데, 
이때 key값이 존재하지 않는데 `my_dict[key]` 를 하게 되면 에러 메시지를 보게 됩니다.

그래서 key 값이 `my_dict`에 있는지 먼저 확인하고자 아래와 같이 코드를 짜게 되는데요,

if key not in my_dict:
    my_dict[key] = []
my_dict[key].append(new_value)

나쁘지 않습니다. 저도 이렇게 주로 코딩해왔습니다.

 

그런데 훨씬 간단하게 코드를 짜는 방법이 있습니다.

my_dict.setdefault(key, []).append(new_value)

이렇게 setdefault() 를 통해 존재하지 않는 키를 처리할 수 있습니다.

 

또는,  defaultdict()를 사용하는 방법도 있습니다!

>>> from collections import defaultdict
>>> my_default_dict = defaultdict(list)
>>> for i in range(5):
>>>     my_default_dict[0].append(i+1)
>>> print(my_default_dict)
defaultdict(<class 'list'>, {0: [1, 2, 3, 4, 5]})

defaultdict를 import 해 주고 list형으로 선언해줍니다. 그러면 값이 잘 들어가죠?

만약 아래와 같이 defaultdict가 아닌 일반 dictionary 형으로 위와 같이 접근하려면

이런 에러가 발생합니다.

 

자료구조를 많이 알고 있는 게 코드를 짤 때 여러모로 도움이 되는 것 같습니다. Python에서 dictionary자료형은 많이 쓰니 잘 알고 있으면 좋을 것 같아요 :)

728x90
반응형

+ Recent posts