일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- google apps script
- Apache
- c#
- Mac
- Tkinter
- Kotlin
- django
- Google Excel
- PySpark
- Python
- hive
- Github
- dataframe
- list
- PostgreSQL
- Excel
- 파이썬
- PANDAS
- string
- numpy
- Java
- gas
- Redshift
- array
- GIT
- Google Spreadsheet
- matplotlib
- math
- SQL
- Today
- Total
달나라 노트
Python collections : defaultdict (default값이 있는 dictionary) 본문
Python collections : defaultdict (default값이 있는 dictionary)
CosmosProject 2021. 7. 15. 01:08
collections module의 defaultdict를 이용하면 default값이 있는 dictionary를 생성할 수 있습니다.
이게 무슨 말인지 예시를 통해 알아봅시다.
dict_1 = {
'a': 1,
'b': 2
}
print(dict_1['c'])
-- Result
NameError: name 'c' is not defined
위 예시에선 dictionary에 존재하지 않는 key인 c를 참조하려고 하니 NameError가 발생합니다.
당연한 얘기이겠죠.
import collections
def default_factory():
return 'no_data'
dict_2 = collections.defaultdict(default_factory, a=1, b=2)
print(dict_2)
print(dict_2['a'])
print(dict_2['c'])
-- Result
defaultdict(<function default_factory at 0x7fc3eadbb160>, {'a': 1, 'b': 2})
1
no_data
위 예시는 동일한 dictionary를 defaultdict를 이용한 예시입니다.
default_factory
먼저 collections.defaultdict는 dictionary에 존재하지 않는 key를 참조하려 할 때 출력할 default 값을 설정해줘야합니다.
이 default 인자를 default_factory라고 하며 default_factory는 위 예시에서처럼 별도의 method로 제시되어야 합니다.
default_factory 함수를 따로 정의해서 no_data라는 텍스트를 return하게 하였습니다.
그리고 이 함수를 default_factory로서 주어주게되죠.
a=1, b=2
collections.defaultdict에서는 key=value 형태로 key value 쌍을 명시해서 dictionary를 생성합니다.
a가 key이며 1은 그에 해당하는 value입니다.
b가 key이며 2는 그에 해당하는 value입니다.
결과를 보면 defaultdict로 dict_2가 잘 생성된걸 볼 수 있습니다.
dict_2['a']에서처럼 a라는 key를 참조하니 1이라는 값을 잘 return해줍니다.
dict_2['c']에서 c는 dict_2에 존재하지 않는 key입니다.
다만 이것은 defaultdict이기 때문에 이미 정해준 default_factory 함수에 의해 NameError 대신 no_data라는 텍스트가 return됩니다.
import collections
def set_default():
return 'no_data'
dict_2 = collections.defaultdict(set_default, a=1, b=2) # 1
print(dict_2['c'])
dict_2 = collections.defaultdict(list, a=1, b=2) # 2
print(dict_2['c'])
dict_2 = collections.defaultdict(set, a=1, b=2) # 3
print(dict_2['c'])
dict_2 = collections.defaultdict(dict, a=1, b=2) # 4
print(dict_2['c'])
-- Result
no_data
[]
set()
{}
1. default_factory에 사용될 함수 이름은 반드시 default_factory일 필요는 없습니다.
자유롭게 설정하면 됩니다.
2. default_factory에 사용할 함수는 custom function뿐 아니라 python 내장 함수도 가능합니다.
list, set, dict는 각각 list, set, dictionary를 생성하는 함수인데 따라서 default_factory의 결과로 비어있는 list, set, dictionary를 return해주는 것을 볼 수 있습니다.
'Python > Python ETC' 카테고리의 다른 글
Python Slack API : Slack Webhook 등록. Slack App 생성하고 설치하기 (0) | 2021.09.08 |
---|---|
Python PIL/Pillow : Image (Python으로 image를 pdf로 변환하기, 이미지 형식 변환, 이미지 확장자 변환, webp to png, jpeg to png) (0) | 2021.07.26 |
Python : tqdm (진행 상황 bar 표시하기) (0) | 2021.06.04 |
Python으로 HTML 태그의 특정 속성값 가져오기 (0) | 2021.05.17 |
Image를 ASCII Character art로 변환하기 in Python (0) | 2021.04.01 |