defaultdict
์๋ก
Code๋ฅผ ๋ถ์ํ ์ผ์ด ์์๋ค. ์งง์ ์ฝ๋๋ ์๋์์ง๋ง, ๋จธ์ ๋น์ ์ ๊ด๋ จ๋ ์ฝ๋์๋ค. ์ฝ๋ ๋ด๋ถ์๋ Python์ผ๋ก defaultdict์ ๋ํด์ ์จ์์๋๋ฐ, ๋ฌด์์ธ์ง ๋ชฐ๋ผ์ ์์ ํ๋ค.
defaultdict ์ค๋ช
์ ์ : defaultdict๋ Python์ collections ๋ชจ๋์ ํฌํจ๋ ํน๋ณํ ์ฌ์ ์๋ฃํ
์ฐจ์ด์ : ๊ธฐ๋ณธ์ ์ธ ์ฌ์ (dict)๊ณผ ์ ์ฌํ์ง๋ง, defaultdict๋ ํค(key)๊ฐ ์กด์ฌํ์ง ์์ ๋ ์๋์ผ๋ก ๊ธฐ๋ณธ ๊ฐ์ ์์ฑํด์ฃผ๋ ์ ์ ์ฐจ์ด๊ฐ ์์
์ฃผ๋ก ์ฌ์ฉ : ๋๋์ ๋ฐ์ดํฐ์์ ๋ฏธ๋ฆฌ ๊ฐ์ ์ด๊ธฐํํ๊ฑฐ๋, ํค ์ค๋ฅ(KeyError)๋ฅผ ๋ฐฉ์งํ๊ณ ์ ํ ๋ ๋งค์ฐ ์ ์ฉ
defaultdict ํ์ํ ๊ฒฝ์ฐ
1. ์ด๊ธฐ๊ฐ ์์ด ๊ฐ ์ถ๊ฐ
์์
์๋ต
์๋ ํด์ผํ๋ ์ด๊ธฐํ ๊ณผ์
hobbies = defaultdict(list)
hobbies['James'].append('Piano')
hobbies['Bob'].append('Soccer')
# ์ถ๋ ฅ : defaultdict(<class 'list'>, {'James': ['Piano'], 'Bob': ['Soccer']})
print(hobbies)
์๋ก์ด ์ทจ๋ฏธ ๋ฑ์ฅ์, ์๋์ผ๋ก ๋ฆฌ์คํธ ์์ฑ
2. ๊ธฐ๋ณธ ํค ๊ฐ ๋ฏธ๋ฆฌ ์ ํด ์ค๋ฅ ๋ฐฉ์ง
๊ธฐ๋ณธ์ ์ธ ์ฌ์ ์ฌ์ฉ
scores = defaultdict(int)
print(scores['Tom']) # ์ถ๋ ฅ : 0 (Tom ํค ๊ฐ์ด ์์ผ๋ฏ๋ก, ๊ธฐ๋ณธ๊ฐ 0 ๋ฐํ)
๊ธฐ๋ณธ๊ฐ 0์ผ๋ก ์ค์ ํ์ฌ, ํค ๊ฐ์ด ์์ ๋ 0 ๋ฐํ
defaultdict ์ฌ์ฉ๋ฒ
from collections import defaultdict
# int ๊ธฐ๋ณธ๊ฐ ์ง์ , defaultdict ์์ฑ
default_d = defaultdict(int)
# 'apple' ์ด๋ผ๋ ํค๊ฐ ์์ผ๋ฏ๋ก, ๊ธฐ๋ณธ๊ฐ 0 ์์ฑ
print(default_d['apple']) # ์ถ๋ ฅ : 0
default_factory ๋ก list, set, int, float ๋ฑ ๊ธฐ๋ณธ ์๋ฃํ ์ฌ์ฉ ๊ฐ๋ฅ