-
[코딩도장] day16. 딕셔너리 응용하기(2/2) - items(), keys(), values()IT/파이썬 2020. 9. 1. 00:49
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit25. 딕셔너리 응용하기
- 25.1 딕셔너리 조작하기
- 25.2 반복문으로 딕셔너리의 카-값 쌍을 모두 출력하기
- 25.3 딕셔너리 표현식 사용하기
- 25.4 딕셔너리 안에서 딕셔너리 사용하기
- 25.5 딕셔너리의 할당과 복사
>> 25.2 반복문으로 딕셔너리의 카-값 쌍을 모두 출력하기 <<
1. 반복문으로 딕셔너리의 카-값 쌍을 모두 출력하기
- for 반복문에 딕셔너리를 지정하여 출력하면 '키'만 출력됨
- '값'을 출력하기 위해서는 딕셔너리.items() 를 사용
- 사용법 :
for 키, 값 in 딕셔너리.items() :
코드
>>> xxxxx>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for key, value in x.items() :
print(key, value)
a 10
b 20
c 30
d 402. 딕셔너리 "키"만 출력하기
- items() : 키-값 쌍을 모두 가져옴
- keys() : 키를 모두 가져옴
- values() : 값을 모두 가져옴
>>> x = {'a':10, 'b':20, 'c':30, 'd':40}
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for key in x.keys() : # "key" 만 가져옴
print(key, end=' ')
a b c d3. 딕셔너리 "값"만 출력하기
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for values in x.values() : # "values" 만 가져옴
print(values, end=' ')
10 20 30 40
>> 25.3 딕셔너리 표현식 사용하기 <<
- 리스트와 같은 방식으로 딕셔너리 안에 for 반복문과 if 조건문으로 새로운 딕셔너리 생성 가능
- 사용법
{키:값 for 키, 값 in 딕셔너리}
dict({키:값 for 키, 값 in 딕셔너리})
>>> keys = ['a', 'b', 'c', 'd']
>>> keys
['a', 'b', 'c', 'd']
>>> x = {key:value for key, value in dict.fromkeys(keys).items()}
>>> x
{'a': None, 'b': None, 'c': None, 'd': None}- dict.fromkeys(keys) : 파이썬 딕셔너리 내장함수로써 dict.fromkeys(key) 와 같이 사용하며 key-value쌍의 새로운 딕셔너리를 생성함 (value는 지정하거나 지정하지 않을 수 있으며, 미지정 시 기본적으로 None 으로 생성함)
여기서는 keys 리스트의 값을 key로 하여 새로운 딕셔너리 생성함 (value는 None)
- dict.fromkeys(keys).itmes() : 파이썬 딕셔너리 내장함수 items()를 사용하여 생성된 딕셔너리의 키-값 쌍을 모두 가져옴
- for key, value in dict.fromkeys(keys).items() : 키-값 쌍을 모두 가져와 key, value 변수에 하나 씩 담음
- key:value for key, value in dict.fromkeys(keys).items() : for 반복문으로 생성된 key-value 쌍으로 딕셔너리 생성
※ 참고 - 딕셔너리 메서드
1. 딕셔너리 표현식에서 if 조건문 사용하기
- 키-값 쌍을 삭제하지 않고 삭제할 키-값 쌍을 제외하고 나머지 키-값 쌍으로 새로운 딕셔너리를 생성
- 사용법
{키:값 for 키, 값 in 딕셔너리 if 조건식}
dict({키:값 for 키, 값 in 딕셔너리 if 조건식})
>>> x
{'a': None, 'b': None, 'c': None, 'd': None}
>>> x = {'a':10, 'b':20, 'c':30, 'd':40}
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> y = {key:value for key, value in x.items() if value != 20} # value가 20인 대상만 제외하고 새로 딕셔너리 생성
>>> y
{'a': 10, 'c': 30, 'd': 40}
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40} # 기존 딕셔너리 변경 없음
>> 25.4 딕셔너리 안에서 딕셔너리 사용하기 (중첩 딕셔너리) <<
- 딕셔너리 내 값 부분에 다시 딕셔너리를 반복하여 사용 가능
- 계층형 데이터 저장 시 유용
- 사용법
딕셔너리 = {키1: {키A: 값A}, 키2: {키B: 값B}}
소스 (dict_dict.py) 결과 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
}
}
print(terrestrial_planet['Venus']['mean_radius'])6051.8 - 딕셔너리 안의 딕셔너리에 접근 시 [](대괄호)를 단계만큼 붙히고 '키'를 지정
- 사용법
딕셔너리[키][키]
딕셔너리[키][키] = 값
>> 25.5 딕셔너리의 할당과 복사 <<
- 리스트와 마찬가지로 딕셔너리를 다른 변수에 할당하더라도 같은 객체를 가리킴 (y = x)
└ 한 쪽의 값을 변경하면 다른 딕셔너리에 영향을 미침
- 완전히 다른 객체를 만들기 위해서는 copy() 메서드 사용 (y = x.copy())
>>> x = {'a':10, 'b':20, 'c':30, 'd':40}
>>> x
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> y = x
>>> y
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> x['a'] = 99 # x 딕셔너리의 키 'a' 의 값을 변경
>>> x
{'a': 99, 'b': 20, 'c': 30, 'd': 40}
>>> y # 키 'a' 의 값 변경됨
{'a': 99, 'b': 20, 'c': 30, 'd': 40}
>>> z = x.copy() # 기존 딕셔너리 복사
>>> z
{'a': 99, 'b': 20, 'c': 30, 'd': 40}
>>> z['a'] = 10 # z 딕셔너리의 키 'a' 값 변경
>>> z
{'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> x # 복사 시 딕셔너리 간 영향 없음
{'a': 99, 'b': 20, 'c': 30, 'd': 40}
>>> y
{'a': 99, 'b': 20, 'c': 30, 'd': 40}1. 중첩 딕셔너리의 할당과 복사 알아보기
- 중첩 딕셔너리를 copy() 로 수행 시 일반 딕셔너리 '할당'과 동일함
- copy 모듈의 deepcopy 함수 사용! (import 필요!)
└ deepcopy 함수는 중첩된 딕셔너리에 들어있는 모든 딕셔너리를 복사한다!
>>> x = {'a':{'python':'2.7'}, 'b':{'python':'3.6'}}
>>> import copy # copy 모듈을 가져옴
>>> y = copy.deepcopy(x)
>>> y
{'a': {'python': '2.7'}, 'b': {'python': '3.6'}}
>>> y['a']['python'] = '2.7.15'
>>> x
{'a': {'python': '2.7'}, 'b': {'python': '3.6'}}
>>> y
{'a': {'python': '2.7.15'}, 'b': {'python': '3.6'}}● 요약 ●
1. 동일 딕셔너리를 가리키는 변수만 다른 딕셔너리를 "할당"으로!
2. 요소가 동일한 완전히 다른 딕셔너리를 만들 때는 "복사"로!
'IT > 파이썬' 카테고리의 다른 글