오늘은 딕셔너리와 반복문을 공부하겠다.
리스트가 '인덱스를 기반으로 값을 저장하는 것'이라면,
딕셔너리는 '키를 기반으로 값을 저장하는 것'이다.
딕셔너리 선언과 요소에 접근하기
# 딕셔너리 요소에 접근하기
# C++에 map과 비슷하지만, 더 많은 기능. 약간 클래스와 map이 합쳐진 것 같은??
# 딕셔너리를 선언합니다
dic = {
"name": "7D 건조 망고",
"type": "당절임",
"ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
"origin": "필리핀"
}
# 출력합니다
print("name : ", dic["name"])
print("type : ", dic["type"])
print("ingredient : ", dic["ingredient"])
print("origin : ", dic["origin"])
# 값을 변경합니다
dic["name"] = "8D 망고 건조"
print("name : ", dic["name"])
dic["ingredient"][1] = "소금"
print("ingredient : ", dic["ingredient"])
위 코드에 주석에서도 말했지만, C++에서의 map과 비슷한 느낌을 많이 받았다.
하지만, 그 와는 상상할 수 없을 만큼 다양한 기능이 존재했다.
먼저 딕셔너리를 선언하는 방법은
딕셔너리 이름 = { # 선언하고 싶은 딕셔너리 요소들 }
와 같은 방법으로 선언한다.
항상 해당 키와 값을 유지해줘야 한다.
또한, 키를 입력하고 스페이스바를 눌려주면 안된다.
그러니까
"name" : "값" # X
"name": "값" # O
키 값 뒤에 스페이스 바를 두고 난 뒤에 : 를 삽입하니 에러가 났다.
에러가 안나게 하는 방법은 저렇게 선언하고 난 뒤에 그냥 : 를 넣으면 된다.
출력은 딕셔너리 이름[키값] 이다.
값 변경은 배열 변경하듯이 변경해주면 된다.
그리고 변경은 각 키의 값 또한 개별적으로 수정이 가능하도록 되어있다.
마지막 코드를 보면 된다.
해당 코드의 출력본이다.
딕셔너리에 값 추가하기/ 제거하기
# 딕셔너리에 요소 추가하기
dic = {}
print("요소 추가 이전 : ", dic)
name = "이름"
head = "정신"
body = "몸"
dic[name] = "새로운 이름"
dic[head] = "새로운 정신"
dic[body] = "새로운 몸"
print("요소 추가 이후 : ", dic)
딕셔너리에 요소를 추가하는 방법은
다음과 같이 키를 정하고 값을 입력하는 것이다.
이미 존재하는 키를 지정하고 값을 넣으면 원래 값이 대치되기도 한다.
# 딕셔너리 요소 제거하기
dic = {
"name": "7D 망고 건조",
"type": "당절임"
}
print("요소 제거 이전 : ", dic)
# 딕셔너리 요소를 제거합니다
del dic["name"]
del dic["type"]
# 요소 제거 후에 내용을 출력해 봅니다
print("요소 제거 이후 : ", dic)
딕셔너리의 요소를 제거하는 방법은
del 을 이용하여 원하는 요소를 제거할 수 있다.
# KeyError 예외
딕셔너리도 존재하지 않는 키에 접근하면 마찬가지로 KeyError 가 발생한다.
따라서 존재하지 않는 키에 접근하지 않도록한다.
딕셔너리 내부에 키가 있는지 확인하기
# 키가 존재하는지 확인하고 값에 접근하기
dic = {
"name": "7D 건조 망고",
"type": "당절임",
"ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
"origin": "필리핀"
}
# 사용자로부터 입력을 받습니다
key = input("> 접근하고자 하는 키 : ")
# 출력합니다
if key in dic :
print(dic[key])
else :
print("존재하지 않는 키에 접근하고 있습니다.")
방금 언급했던 것 처럼 딕셔너리에 존재하지 않는 키에 접근하면 에러가 발생한다.
에러를 미리 방문하기 싫다면, 키의 존재를 확인하는게 맞는 방법이다.
키의 존재를 확인할 수 있는 방법은
in 키워드를 사용하는 것이다.
조건문을 사용하여 dic안에 사용자가 입력한 key가 존재하는지를 파악하는 코드이다.
위 코드의 출력본이다.
또 다른 방법은 get()함수이다.
# 키가 존재하지 않을 때 None을 출력하는지 확인하기
dic = {
"name": "7D 건조 망고",
"type": "당절임",
"ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
"origin": "필리핀"
}
# 존재하지 않는 키에 접근해 봅니다.
value = dic.get("존재하지 않는 키")
print("값 : ", value)
if value == None:
print("존재하지 않는 키에 접근했었습니다.")
get() 함수는 딕셔너리의 키로 값을 추출하는 기능으로,
딕셔너리[키]를 입력할 때와 같은 기능을 수행하지만, 존재하지 않는 키에 접근할 경우 KeyError를 발생시키지 않고 None을 출력한다.
코드에서 get의 매개변수를 "존재하지 않는 키"를 주었기에
실제로 딕셔너리 내부에 저 이름을 가진 키가 없다는걸 파악한 후 None을 return 했다.
따라서 코드의 출력본이다.
for 반복문 : 딕셔너리와 함께 사용하기
# for 반복문과 딕셔너리
dic = {
"name": "7D 건조 망고",
"type": "당절임",
"ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
"origin": "필리핀"
}
for key in dic :
print(key, ": ", dic[key])
for 반복문으로 dic의 key 값을 하나씩 불러와 print하는 코드이다.
위 코드의 출력본이다.
정리
딕셔너리는 키를 기반으로 여러 자료를 저장하는 자료형이다.
키는 딕셔너리 내부에서 값에 접근할 때 사용하는 것이다.
값은 딕셔너리 내부에 있는 각각의 내용을 의미한다.
'Programming > Python' 카테고리의 다른 글
11. 문자열, 리스트, 딕셔너리와 관련된 기본 함수 (0) | 2021.03.16 |
---|---|
10. 반복문과 while 반복문 (0) | 2021.03.14 |
8. 리스트와 반복문 (0) | 2021.03.12 |
7. 조건문 (0) | 2021.03.10 |
6. 숫자와 문자열의 다양한 기능 (0) | 2021.03.08 |
댓글