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
반응형
'코딩해 > Python' 카테고리의 다른 글
[Python] Multiline string | 개행 스트링 입력 (0) | 2021.05.20 |
---|---|
[Python] argument 처리 | argument 파싱 | shell python 실행 (0) | 2021.03.05 |
[Python] argparser 사용하기(파이썬 호출 인자) (0) | 2020.12.06 |
[Python] 파이썬 CSV 모듈 쓰기, 읽기, 수정 (0) | 2020.10.21 |
[Python] 이중 리스트 초기화(내포된 리스트를 가진 리스트 초기화) (0) | 2020.10.14 |