deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

[python] defaultdict
Programming language/Python

[python] defaultdict

2020. 8. 29. 20:52
๋ฐ˜์‘ํ˜•

๐Ÿ“— 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
    'Programming language/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [python] filter
    • [python] accumulate(itertools), ๋ˆ„์  ํ•ฉ
    • [python] pow, ์ œ๊ณฑ, ๊ฑฐ๋“ญ์ œ๊ณฑ๊ณผ ๋‚˜๋จธ์ง€
    • [python] input, sys.stdin.readline
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”