๐ defaultdict
defaultdict ๋ dict ์ ์๋ธ ํด๋์ค์ด๋ค.
์ด๋ฆ์์ ์ ์ถํ ์ ์๋ฏ์ด ๊ธฐ๋ณธ๊ฐ(default)๋ฅผ ์ค์ ํ ์ ์๋ ์ข์ ์น๊ตฌ์ด๋ค.
๐ต defaultdict
์ด๋ฌํ ๋ฒ๊ฑฐ๋ก์์ ์์ ์ฃผ๋๊ฒ ๋ฐ๋ก defaultdict์ด๋ค.
defaultdict๋ ์ฒ์ ์ ์ธํ ๋ ๋ค์ํ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ ์ ์๋ค.
from collections import defaultdict
my_defaultdict = defaultdict(int)
print(my_defaultdict) # defaultdict(<class 'int'>, {})
my_defaultdict = defaultdict(dict)
print(my_defaultdict) # defaultdict(<class 'dict'>, {})
my_defaultdict = defaultdict(list)
print(my_defaultdict) # defaultdict(<class 'list'>, {})
๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ๊ฐ๋ค์ด๋ค. ๊ฐ๊ฐ defaultdict์ ํด๋์ค ํ์ ์ด ์ง์ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
int๋ก ์ค์ ํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด 0, dict๋ list๋ ๋น์ด์๋ dict {}๋ list []๊ฐ ๋๋ค.
๐น์กด์ฌํ์ง ์์ ๊ฐ์ ํธ์ถ ํ ๋
my_defaultdict = defaultdict(int)
print(my_defaultdict['a']) # 0
print(my_defaultdict) # defaultdict(<class 'int'>, {'a': 0})
KeyError๊ฐ ๋ฐ์ํ์ง ์๊ณ ๋ํดํธ๊ฐ์ด 0์ผ๋ก ๋ค์ด๊ฐ ๊ฒ์ ๋ณผ ์ ์๋ค.
๐น๊ฐ์ ๋ํด์ค ๋
my_defaultdict = defaultdict(int)
my_defaultdict['a'] += 99
print(my_defaultdict) # defaultdict(<class 'int'>, {'a': 99})
ํค๊ฐ์ด ์กด์ฌํ์ง ์์๋ ๊ฐ์ ๋ํด์ค ์ ์๋ค.
๐น ๋ฆฌ์คํธ์์ ํ์ฉ
my_defaultdict = defaultdict(list)
my_defaultdict['a'].append('๋ฆฌ์คํธ')
print(my_defaultdict) # defaultdict(<class 'list'>, {'a': ['๋ฆฌ์คํธ']})
๐ต dict
์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ ๋์ ๋๋ฆฌ์ ๊ฒฝ์ฐ ์๋ ํค๋ฅผ ์ฐพ๋๋ค๋ฉด KeyError๊ฐ ๋ํ๋๋ค.
my_dict = {
'a':'b'
}
print(my_dict['c'])
# KeyError: 'c'
ํ์ง๋ง ์ด๋ฐ ๊ฒฝ์ฐ๋ get()์ ์ฌ์ฉํ๋ค๋ฉด ํด๊ฒฐ ํ ์ ์๋ค๋ ๊ฒ์ ์ ๊ฒ์ด๋ค.
my_dict = {
'a':'b'
}
print(my_dict.get('c'))
# None
์ด๋ ๊ฒ ํค๊ฐ ์๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ None์ด ๋ฐํ๋๋ค.
๊ทธ๋ ์ง๋ง ์ฌ๊ธฐ์ ๋ ๋ฌธ์ ๊ฐ ์๋ค.
๋ง์ฝ ๋์ ๋๋ฆฌ์ ์กด์ฌํ๋ ํค๊ฐ์ ๊ฐ์ ๋ํ๊ฑฐ๋ ์๋ค๋ฉด ์๋ก ๋ง๋ค๊ณ ์ถ์ ๋๋ if๋ฌธ์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋ค.
my_dict = {
'a':'b'
}
if my_dict.get('c'):
my_dict['c'] += 1
else:
my_dict['c'] = 1
print(my_dict)
# {'a': 'b', 'c': 1}
'Programming language > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] filter (2) | 2020.08.31 |
---|---|
[python] accumulate(itertools), ๋์ ํฉ (0) | 2020.08.30 |
[python] pow, ์ ๊ณฑ, ๊ฑฐ๋ญ์ ๊ณฑ๊ณผ ๋๋จธ์ง (0) | 2020.08.28 |
[python] input, sys.stdin.readline (0) | 2020.08.27 |
[python] heapq(ํํ, ์ฐ์ ์์ํ) (2) | 2020.08.26 |