개발하고 싶어요
딕셔너리 응용하기 본문
In [41]:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity="all"
딕셔너리 조작하기¶
딕셔너리에 키 - 값 추가하기¶
- setdefault() : 키 -값 쌍 추가
- update() : 키의 값 수정, 키가 없으면 키 - 값 쌍 추가
In [3]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
dic.setdefault('e')
dic
Out[3]:
{'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None}
In [4]:
dic.setdefault('f', 100)
dic
Out[4]:
{'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None, 'f': 100}
In [5]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
dic.update(a = 90)
dic.update(e = 50)
dic
Out[5]:
{'a': 90, 'b': 20, 'c': 30, 'd': 40, 'e': 50}
In [6]:
dic.update(a = 100, f = 900)
dic
Out[6]:
{'a': 100, 'b': 20, 'c': 30, 'd': 40, 'e': 50, 'f': 900}
- update(키 = 값)은 키가 문자열인 경우만 사용할 수 있다
In [7]:
dic = {1 : 'one', 2 : 'twe'}
dic.update({1 : "ONE", 3 : "THREE"})
dic
Out[7]:
{1: 'ONE', 2: 'twe', 3: 'THREE'}
In [9]:
dic.update([[2, "TWE"], [4 , "FOUR"]])
dic
Out[9]:
{1: 'ONE', 2: 'TWE', 3: 'THREE', 4: 'FOUR'}
In [10]:
dic.update(zip([1, 2], ['one', 'twe']))
dic
Out[10]:
{1: 'one', 2: 'twe', 3: 'THREE', 4: 'FOUR'}
딕셔너리에서 키 - 값 쌍 삭제¶
- pop(키)
In [13]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
print(dic)
dic.pop('a')
dic
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
Out[13]:
{'b': 20, 'c': 30, 'd': 40}
In [15]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
print(dic)
del dic['a']
dic
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
Out[15]:
{'b': 20, 'c': 30, 'd': 40}
딕셔너리에서 임의의 키 - 값 쌍 삭제하기¶
- popitem() : 임의의 키 - 값 쌍을 삭제한 뒤 삭제한 키 - 값 쌍을 튜플로 반환
In [19]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
print(dic.popitem())
print(dic)
('d', 40)
{'a': 10, 'b': 20, 'c': 30}
딕셔너리의 모든 키 - 값 쌍을 삭제¶
- clear()
In [20]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
dic.clear()
dic
Out[20]:
{}
딕셔너리에서 키의 값을 가져오기¶
- get(키)
In [21]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
print(dic.get('a'))
10
딕셔너리에서 키 - 값 쌍을 모두 가져오기¶
- items : 키 - 값 쌍을 모두 가져옴
- keys : 키를 모두 가져옴
- values : 값을 모두 가져옴
In [22]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
print(dic.items())
print(dic.keys())
print(dic.values())
dict_items([('a', 10), ('b', 20), ('c', 30), ('d', 40)])
dict_keys(['a', 'b', 'c', 'd'])
dict_values([10, 20, 30, 40])
리스트와 튜플로 딕셔너리 만들기¶
- dict.fromkeys(키리스트)
In [23]:
keys = ['a', 'b', 'c', 'd']
dic = dict.fromkeys(keys)
dic
Out[23]:
{'a': None, 'b': None, 'c': None, 'd': None}
In [24]:
dic2 = dict.fromkeys(keys, 100)
dic2
Out[24]:
{'a': 100, 'b': 100, 'c': 100, 'd': 100}
반복문으로 딕셔너리의 키 - 값 쌍을 모두 출력¶
In [25]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
for i in dic: # dic의 key만 출력
print(i, end = ' ')
a b c d
In [26]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
for i in dic.items():
print(i, end = ' ')
('a', 10) ('b', 20) ('c', 30) ('d', 40)
In [27]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
for key, val in dic.items():
print(key, val)
a 10
b 20
c 30
d 40
딕셔너리의 키만 출력¶
In [28]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
for key in dic.keys():
print(key, end = ' ')
a b c d
딕셔너리의 값만 출력¶
In [29]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
for val in dic.values():
print(val, end = ' ')
10 20 30 40
딕셔너리 표현식 사용하기¶
- {키 : 값 for 키, 값 in 딕셔너리}
- dict({키 : 값 for 키, 값 in 딕셔너리})
In [31]:
keys = ['a', 'b', 'c', 'd']
dic = {key : val for key, val in dict.fromkeys(keys).items()}
dic
Out[31]:
{'a': None, 'b': None, 'c': None, 'd': None}
In [32]:
keys = ['a', 'b', 'c', 'd']
dic = {key : 0 for key in dict.fromkeys(keys).keys()}
dic
Out[32]:
{'a': 0, 'b': 0, 'c': 0, 'd': 0}
딕셔너리 표현식에서 if 조건문 사용하기¶
- {키 : 값 for 키, 값 in 딕셔너리 if 조건식}
- dict({키 : 값 for 키, 값 in 딕셔너리 if 조건식})
In [33]:
dic = {'a':10, 'b':20, 'c':30, 'd':40}
dic = {key : val for key, val in dic.items() if val != 20}
dic
Out[33]:
{'a': 10, 'c': 30, 'd': 40}
딕셔너리 안에서 딕셔너리 사용하기¶
- 딕셔너리 = {키1 : {키A : 값A}, 키2 : {키B : 값B}}
In [34]:
terrestrial_planet = {
'Mercury' : {
'mean_radius' : 2439.7,
'mass' : 3.3022E+23,
'orbital_period' : 87.969
},
'Venus' : {
'mean_radius' : 6051.8,
'mass' : 4.8676E+24,
'orbital_period' : 224.70069
},
'Earth' : {
'mean_radius' : 6371.0,
'mass' : 5.97219E+24,
'orbital_period' : 365.25641
},
'Mars' : {
'mean_radius' : 3389.5,
'mass' : 6.4185E+23,
'orbital_period' : 686.9600
}
}
terrestrial_planet["Venus"]['mean_radius']
Out[34]:
6051.8
딕셔너리의 할당과 복사¶
In [35]:
x = {'a' : 0, 'b' : 0, 'c' : 0, 'd' : 0}
y = x
print( x is y)
True
In [36]:
y['a'] = 90
print(x)
print(y)
{'a': 90, 'b': 0, 'c': 0, 'd': 0}
{'a': 90, 'b': 0, 'c': 0, 'd': 0}
In [37]:
x = {'a' : 0, 'b' : 0, 'c' : 0, 'd' : 0}
y = x.copy()
print(x is y)
False
In [38]:
y['a'] = 90
print(x)
print(y)
{'a': 0, 'b': 0, 'c': 0, 'd': 0}
{'a': 90, 'b': 0, 'c': 0, 'd': 0}
중첩 딕셔너리의 할당과 복사 알아보기¶
- deepcopy() : 중첩 딕셔너리를 완전히 복사하기 위해
In [39]:
x = {'a' : {'python' : '2.7'}, 'b' : {'python' : '3.6'}}
y = x.copy()
y['a']['python'] = '2.7.15'
print(x)
print(y)
{'a': {'python': '2.7.15'}, 'b': {'python': '3.6'}}
{'a': {'python': '2.7.15'}, 'b': {'python': '3.6'}}
In [40]:
x = {'a' : {'python' : '2.7'}, 'b' : {'python' : '3.6'}}
import copy
y = copy.deepcopy(x)
y['a']['python'] = '2.7.15'
print(x)
print(y)
{'a': {'python': '2.7'}, 'b': {'python': '3.6'}}
{'a': {'python': '2.7.15'}, 'b': {'python': '3.6'}}
'PYTHON' 카테고리의 다른 글
파일 사용하기 (1) | 2023.12.26 |
---|---|
set (0) | 2023.12.26 |
문자열 응용하기 (0) | 2023.12.26 |
리스트, 튜플 응용 (0) | 2023.12.26 |
2차원 리스트 사용하기 (0) | 2023.12.26 |