*shell 환경이 아닌 스크립트(script) 환경에서 작업했기 때문에 print로 출력. shell 환경이라면 print 생략 가능
●딕셔너리 자료형은 사전(Dictionary)에서 단어를 찾듯이 값을 가져올 수 있다고 하여 딕셔너리라고 부른다. 딕셔너리는 { }(중괄호) 안에 키: 값 형식으로 저장하며 각 키와 값은 ,(콤마)로 구분해준다.
* 중간정리 : 튜플 () , 리스트 [] , 딕셔너리 {키 : 값}
딕셔너리는 키를 먼저 지정하고 :(콜론)을 붙여서 값을 표현한다. 특히 키에는 값을 하나만 지정할 수 있으며 이런 특성을 따서 키-값 쌍(key-value pair)이라 부른다.(키-값은 1:1 대응).
예. lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
●키 이름이 중복된다면?
예. 키 이름의 중복 #health가 두 개임.
lux = {'health': 490, 'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
print(lux)
결과값 : {'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
즉, 딕셔너리에 키와 값을 저장할 때 키가 중복되면 가장 뒤에 있는 값만 사용한다. 따라서 중복되는 키는 저장되지 않는다.
●딕셔너리 키의 자료형
딕셔너리의 키는 문자열뿐만 아니라 정수, 실수, 불(bool)도 사용할 수 있으며 자료형을 섞어서 사용해도 된다. 그리고 값에는 리스트, 딕셔너리 등을 포함하여 모든 자료형을 사용할 수 있다. 단, 키에는 리스트와 딕셔너리를 사용할 수 없다.
key | value |
정수, 실수, 불(bool), 문자열 | 리스트, 딕셔너리, 정수, 실수, 문자형 등 |
●빈 딕셔너리 만들기
x = {}
y = dict()
●딕셔너리 만드는 방법
- 딕셔너리 = dict(키1=값1, 키2=값2)
- 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
- 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
- 딕셔너리 = dict({키1: 값1, 키2: 값2})
1. dict에서 키=값형식으로 딕셔너리를 만들 수 있다. 이 때는 키에 ' '(작은따옴표)나 " "(큰따옴표)를 사용하지 않아야 한다. 키는 딕셔너리를 만들고 나면 문자열로 바뀐다.
예. lux1 = dict(health=490, mana=334, melee=550, armor=18.72)
2. zip 함수를 이용하는 방법. 키가 들어있는 리스트와 값이 들어있는 리스트를 차례대로 zip에 넣은 뒤 다시 dict에 넣어주면 된다.
예. lux2 = dict(zip(['health', 'mana', 'melee', 'armor'], [490, 334, 550, 18.72])) #zip 함수로 key리스트와 value(값)리스트를 묶어줌.
3. 리스트 안에 (키, 값) 형식의 튜플을 나열하는 방법.
예. lux3 = dict([('health', 490), ('mana', 334), ('melee', 550), ('armor', 18.72)])
4. dict 안에서 중괄호로 딕셔너리를 생성하는 방법.
예. lux4 = dict({'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72})
이처럼 딕셔너리는 키를 통해서 값의 의미를 파악하기 쉽다. 특히 딕셔너리는 예제의 게임 캐릭터 능력치처럼 특정 주제에 대해 연관된 값들을 모아둘 때 주로 사용한다.
●딕셔너리 키에 접근하기
딕셔너리의 키에 접근할 때는 딕셔너리 뒤에 [ ](대괄호)를 사용하며 [ ] 안에 키를 지정해주면 된다. (Index랑 비슷?)
딕셔너리에 키를 지정하지 않으면 해당 딕셔너리 전체를 뜻하고 전체 딕셔너리가 출력된다.
예.
lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
lux # 딕셔너리에 키를 지정하지 않으면 딕셔너리 전체를 뜻함
결과값 : {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
●딕셔너리 키에 값 할당하기(assignment)
[ ](대괄호)로 키에 접근한 뒤 값을 할당한다. 만일 없는 키에 값을 할당한다면 해당 키가 추가되고 값이 할당된다.
예. lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
lux['health'] = 2037 # 키 'health'의 값을 2037로 변경
lux['mana'] = 1184 # 키 'mana'의 값을 1184로 변경
*'mana_regen'은 없는 키다. 따라서 키가 추가되고 3.28을 할당하게 된다.
lux['mana_regen'] = 3.28 # 키 'mana_regen'을 추가하고 값 3.28 할당
만일, 없는 키에서 값을 가져오라고 한다면 Error 가 발생한다.
●딕셔너리에 키가 있는지 확인하기 (in 연산자 활용)
딕셔너리에 특정 키가 있으면 True, 없으면 False가 나온다. 반대로 in 앞에 not을 붙이면 특정 키가 없는지 확인한다.
예.
lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
'health' in lux #True
'attack_speed' in lux #False
'attack_speed' not in lux #True
'health' not in lux #False
●딕셔너리의 키 갯수 구하기 (len 함수 사용)
len(lux)와 같이 len에 딕셔너리 변수를 넣어서 키의 개수를 구해도 되고, len에 딕셔너리를 그대로 넣어도 된다.
lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
len(lux) #4 출력
len({'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}) #4 출력
딕셔너리를 생성할 때는 { }(중괄호)를 사용하고, 키와 값을 1:1 관계로 저장한다는 점이 중요하다. 특히 딕셔너리는 특정 주제에 대해 연관된 값을 저장할 때 사용한다는 점. 이 부분이 리스트, 튜플과 딕셔너리의 차이점이다.
'Programming > Python' 카테고리의 다른 글
[코딩도장-파이썬] else 사용하기 (0) | 2020.11.12 |
---|---|
[코딩도장-파이썬] if 조건문 (0) | 2020.11.12 |
[코딩도장-파이썬] 슬라이스(Slice) (0) | 2020.11.11 |
[코딩도장-파이썬] 시퀀스(Sequence) 자료형 활용하기 3 (0) | 2020.11.11 |
[코딩도장-파이썬] 시퀀스(Sequence) 자료형 활용하기 2 (0) | 2020.11.11 |