-
[코딩도장] day7. 딕셔너리IT/파이썬 2020. 8. 12. 05:42
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit12. 딕셔너리 사용하기
- 12.1 딕셔너리 만들기
- 12.2 딕셔너리의 키에 접근하고 값 할당하기
>> 12.1 딕셔너리 만들기 <<
1. 딕셔너리
- 리스트, 튜플에서 value값만 저장하는 것과 달리 "key-value쌍"으로 데이터를 관리
- 딕셔너리는 해시(Hash) 기법을 이용하여 데이터를 저장하며
'key-value'형태의 자료형을 해시, 해시맵, 해시테이블 등으로 부름
- 사용법: 딕셔너리 = {키1:값1, 키2:값2}
(일반적으로 key는 문자열로 지정하기 때문에 '(작은따옴표)로 감싸준다)
>>> lux = {'health':490,'mana':334,'melee':550,'armor':18.72}
>>> lux
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}- 키가 중복되어 입력되는 경우 가장 뒤에 입력된 키의 값만 사용됨
>>> lux = {'health':490,'health':800,'mana':334,'melee':550,'armor':18.72}
>>> lux
{'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}2. 딕셔너리 키의 자료형
- key는 문자열뿐만 아니라 정수, 실수, 불도 사용 가능하며 여러 자료형을 함께 사용 가능함
- value는 리스트, 딕셔너리 등을 포함한 모든 자료형 사용 가능
단, key에는 리스트, 딕셔너리 사용 불가
>>> x = {[10,20]:100}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
>>> x = {{'a':10}:100}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'3. 빈 딕셔너리 만들기
- 사용법1: 딕셔너리 = {}
- 사용법2: 딕셔너리 = dict()
>>> x = {}
>>> x
{}
>>> x = dict()
>>> x
{}4. dict()로 딕셔너리 만들기
- 키-값을 연결하거나, 리스트, 튜플, 딕셔너리로 딕셔너리 생성 시 사용
- 사용법1: 딕셔너리 = dict(키1=값1, 키2=값2)
- 사용법2: 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
- 사용법3: 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
- 사용법4: 딕셔너리 = dict({키1: 값1, 키2: 값2})
#사용법1
- 키는 '(작은따옴표)나 "(큰따옴표)를 사용하지 않아야 함
=> 딕셔너리 생성 시 자동으로 문자열로 변경됨
>>> lux1 = dict(health=490, mana=334, melee=550, armor=18.72)
>>> lux1
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}#사용법2
- 키만 들어있는 리스트와 값만 들어있는 리스트를 zip함수에 넣어줌 (리스트가 아닌 튜플에 저장해도 ok)
>>> lux2 = dict(zip(['health', 'mana', 'melee', 'armor'], [490, 334, 550, 18.72]))
>>> lux2
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}#사용법3
- 리스트 안에 (키, 값) 형식의 튜플을 나열하는 방법
>>> lux3 = dict([('health', 490), ('mana', 334), ('melee', 550), ('armor', 18.72)])
>>> lux3
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}#사용법4
- dict() 안에 중괄호로 딕셔너리를 생성
>>> lux4 = dict({'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72})
>>> lux4
{'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>> 12.2 딕셔너리의 키에 접근하고 값 할당하기 <<
5. 딕셔너리 키 접근
- 사용법: 딕셔너리[키]
( 키를 지정하지 않으면 딕셔너리 전체를 의미 )
>>> lux
{'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux['health']
800
>>> lux['mana']
3346. 딕셔너리 키에 값 할당하기
- 사용법: 딕셔너리[키] = 값
>>> lux
{'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux['health'] = 2037 # 키 'health'의 값을 2037로 변경
>>> lux['mana'] = 1184 # 키 'mana'의 값을 1184로 변경
>>> lux
{'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72}- 지정되지 않은 키로 값을 할당하면 해당 키-값이 할당됨
- 없는 키로 값을 가져오려고 하면 에러 발생!
>>> lux
{'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72}
>>> lux['mana-regen'] = 3.28 # 키 'mana-regen'을 추가하고 값 3.28 할당
>>> lux
{'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}
>>>
>>> lux
{'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}
>>> lux['test'] # 할당되지 않은 키 'test'로 값을 가져옴
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'test'7. 딕셔너리에 키가 있는지 확인
- 사용법: 키 in 딕셔너리
- 결과값으로 True, False 리턴하며 'not in' 은 특정 키가 없는지 확인
>>> 'health' in lux # 키 'health'가 존재하는지 확인
True
>>> 'health' not in lux # 키 'health'가 없는지 확인
False8. 딕셔너리의 키 개수 구하기
- 사용법: len(딕셔너리)
>>> len(lux)
5
>>> len({'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28})
59. 딕셔너리 키 삭제
- 사용법: del 딕셔너리[키]
>>> lux
{'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}
>>> del lux['health']
>>> lux
{'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}● 요약 ●
1. "key-value쌍"으로 데이터 관리가 필요하다면 '딕셔너리'로!
2. in, len, del 연산자는 시퀀스 자료형(리스트, 튜플, range, 문자열)과 딕셔너리에 사용 가능
'IT > 파이썬' 카테고리의 다른 글
[코딩도장] day8. 파이썬 분기조건 - else (0) 2020.08.15 [코딩도장] day7. if문 (0) 2020.08.12 [코딩도장] day6. 시퀀스 자료형(3) - 슬라이스 (0) 2020.08.09 [코딩도장] day5. 시퀀스 자료형(2) - len(), 인덱스, del (0) 2020.08.08 [코딩도장] day5. 파이썬 시퀀스 자료형(1) - in, +, * 연산자 (0) 2020.08.07