๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Python

ํŒŒ์ด์ฌ ๋”•์…”๋„ˆ๋ฆฌ(Dictionary)์˜ ๋ชจ๋“  ๊ฒƒ

by ์„œ์•„๋ž‘๐Ÿ˜ƒ 2023. 12. 4.

 

 

๋”•์…”๋„ˆ๋ฆฌ(Dictionary)

ํŒŒ์ด์ฌ ๋”•์…”๋„ˆ๋ฆฌ๋Š” Key, Value ํ•œ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠน์ • Key๋ฅผ ํ†ตํ•ด Value๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์—ฐ๊ด€ ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ์€ ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ ๋”•์…”๋„ˆ๋ฆฌ๋Š” ํ•ด์‹œํ…Œ์ด๋ธ”(Hash Table)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰์ด ๋งค์šฐ ๋น ๋ฅธ ํŽธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ํŠน์ง•์€ Key์˜ ๊ณ ์œ ์„ฑ์ž…๋‹ˆ๋‹ค. Key๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Key์— ํŠœํ”Œ์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ(immutable), ๋ฆฌ์ŠคํŠธ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(mutable).

 

๊ธฐ๋ณธ

dic = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
dic['name']    # 'seorang' -> value ๋ฐ˜ํ™˜
dic['sex'] = 'male'    # ์š”์†Œ ์ถ”๊ฐ€
del dic['phone']    # ์š”์†Œ ์‚ญ์ œ

 

ํ•จ์ˆ˜

  1. Key๋งŒ ๋ฝ‘์•„๋‚ด๊ธฐ(keys)
>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> a.keys()    
dict_keys(['name', 'phone', 'birth']   # dict_keys ๊ฐ์ฒด ๋ฐ˜ํ™˜

>>>> list(a.keys())    
['name', 'phone', 'birth']    # ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜

>>>> for k in a.keys():
				print(k)

 

2. Value ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ(values)

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> a.values()
dict_values(['seoarang', '1313414', '0819']    # dict_values ๊ฐ์ฒด ๋ฐ˜ํ™˜

 

3. Key, Value ์Œ ์–ป๊ธฐ(items)

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> a.items()
dict_items([('name', 'seoarang'), ('phone', '1313414'), ('birth', '0819')]) # dict_items ๊ฐ์ฒด ๋ฐ˜ํ™˜

>>>> for key, val in a.items():
				print(f"key : {key}, value : {value}")

 

4. Key๋กœ Value ์–ป๊ธฐ(get)

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> a.get('name')
'seoarang'

>>>> a.get('age')
None    

>>>> a['age']
KeyError: 'nokey'   # ์—†๋Š” ํ‚ค๋ฅผ ์กฐํšŒํ•  ๋•Œ get๋ฐฉ์‹์€ None์„ ๋ฐ˜ํ™˜, a['sex']๋Š” Key ์˜ค๋ฅ˜ ๋ฐœ์ƒ!

 

5. ๋”•์…”๋„ˆ๋ฆฌ ๋น„์šฐ๊ธฐ(clear)

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> a.clear()
>>>> a
{}

 

6. Key ์ฒดํฌ ํ•˜๊ธฐ(in)

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> 'name' in a
True

>>>> 'age'
False

 

7. ๋”•์…”๋„ˆ๋ฆฌ ๋ณต์‚ฌ(dict, copy)

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> b = a
>>>> a['name'] = 'david'
>>>> b
{'name' : 'david', 'phone':'1313414', 'birth': '0819'}   # dict1 = dict2์˜ ๊ฒฝ์šฐ ๋‘ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•จ

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> c = dict(a)
>>>> a['name'] = 'david'
{'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}   # dict(a)์˜ ๊ฒฝ์šฐ a๊ฐ€ ๋ณต์‚ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ

>>>> a = {'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}
>>>> d = a.copy()
>>>> a['name'] = 'david'
{'name' : 'seoarang', 'phone':'1313414', 'birth': '0819'}   # a.copy()์˜ ๊ฒฝ์šฐ a๊ฐ€ ๋ณต์‚ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ

 

8. ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’, ํ•ฉ(max, min, sum)

# Key๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’, ํ•ฉ ๋ฐ˜ํ™˜

>>>> a = {1 :'a', 2 : 'b', 3 : 'c'}
>>>> max(a)
3

>>> min(a)
1

>>>> sum(a)
6

>>>> a = {'a' : 1, 'b' : 2, 'c' : 3}
>>>> max(a)
'c'

>>> min(a)
'a'

>>>> sum(a)
TypeError : unsupported operand type(s) for +: 'int' and 'str'

 

 

์ฐธ๊ณ : ์ ํ”„ ํˆฌ ํŒŒ์ด์ฌ

๋Œ“๊ธ€