1. 손콩떡의 점수는?
학생들 이름이 담겨있는 students 리스트와 학생들의 점수가 담겨있는 scores 리스트가 있습니다. 손콩떡 학생의 점수를 출력해 주세요.
< 정답 코드 >
students = ["이선호", "김대호", "손콩떡"]
scores = [90, 60, 75]
son_index = students.index("손콩떡")
print(scores[son_index])
2. 딕셔너리 선언방법
위의 문제처럼 이름-점수 같이 매칭이 되는 데이터들이 많이 있습니다. 이런 경우 여러개의 리스트를 사용하기 보다는 딕셔너리를 이용하면 훨씬 간단하고 편하게 데이터를 저장할 수 있습니다.
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
{} 괄호를 사용하면 딕셔너리를 선언 할 수 있습니다. 딕셔너리안 요소는 ‘:’ 을 사용하여 매칭 관계를 선언합니다. 이때 :의 왼쪽 값을 키(key) 오른쪽 값을 벨류(value) 라고 부릅니다.
3. 딕셔너리 값 가져오기
이제 딕셔너리로 선언된 데이터에서 손콩떡 점수를 출력하는 코드를 알아봅시다.
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
print(student_score["손콩떡"])
딕셔너리 명[”키 값”] 을 하면 키 값에 매칭된 벨류 값을 반환해줍니다. 반대로 딕셔너리 명[”벨류 값”] 을 하면 에러가 발생해요… 딕셔너리는 키를 통해 벨류를 가져올 수 있는 구조 입니다.
딕셔너리의 함수 중 get() 을 통해서도 값을 가져올 수 있습니다.
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
print(student_score.get("손콩떡"))
💡딕셔너리명[”키값”] VS 딕셔너리명.get(”키값”)
딕셔너리명[”키값”] 은 딕셔너리에 해당 키값이 존재하지 않으면 오류를 발생시킵니다.
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75} print(student_score["coding"])
하지만 딕셔너리명.get(”키값”) 은 딕셔너리에 해당 키 값이 존재하지 않으면 None을 반환합니다.
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75} print(student_score.get("coding"))
4. 딕셔너리에 값 추가하기 & 수정하기
새로운 학생인 “킹율”이 왔습니다. 이 학생은 아직 시험을 치르지 않았으니 점수가 없다는 의미의 None 값으로 저장합시다.
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
student_score["킹율"] = None
print(student_score)
수정도 같은 방법으로 할 수 있습니다
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
student_score["손콩떡"] = 40
즉, 딕셔너리명[”키값”] = 벨류값 은 키값이 존재하면 수정되고 키값이 존재하지 않으면 새로 생성됩니다.
5. 딕셔너리 요소 삭제하기
“이선호”가 졸업했어요. ”이선호”값을 삭제하는 방법을 알아봅시다.
# pop() 사용법
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
student_score.pop("이선호")
# del 사용법
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
del student_score["이선호"]
리스트와 마찬가지로 pop() 과 del 을 통해 삭제할 수 있습니다.
6. 딕셔너리 와 리스트
“이선호”, “김대호”, “손콩떡” 학생들이 각각 영어 수학 점수를 아래와 같이 받았습니다.
수학 영어
| 이선호 | 90 | 70 |
| 김대호 | 40 | 50 |
| 손콩떡 | 70 | 90 |
이 데이터를 딕셔너리를 이용해 저장하는 방법을 알아봅시다.
student_score = {
"이선호" : [90, 70],
"김대호" : [40, 50],
"손콩떡" : [70, 90],
}
print(f"이선호의 영어 성적 : {student_score['이선호'][1]}")
print(f"손콩떡의 수학 성적 : {student_score['손콩떡'][0]}")
이런 식으로 리스트를 벨류자리에 넣어서 표현할 수 있습니다.
💡 딕셔너리 내 줄 바꿈
딕셔너리 내 줄 바꿈은 아무런 영향이 없습니다. 줄바꿈 해도 정상작동, 안 해도 정상작동 합니다. 보통은 줄 바꿈을 해줌으로써 코드를 좀 더 보기 좋게 적습니다.
7. 연습문제
Q1. 다음 중 딕셔너리를 올바르게 선언한 코드는 무엇인가요?
## 선택지
a) scores = ["이선호": 90, "김대호": 60]
b) scores = {"이선호": 90, "김대호": 60}
c) scores = ("이선호": 90, "김대호": 60)
d) scores = {"이선호", 90, "김대호", 60}
Q2. 아래 딕셔너리가 주어졌을 때, "손콩떡"의 점수를 출력하는 올바른 방법은 무엇인가요?
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
## 선택지
a) print(student_score["손콩떡"])
b) print(student_score[75])
c) print(student_score("손콩떡"))
d) print(student_score.get["손콩떡"])
Q3. 다음 코드의 실행 결과로 옳은 것은 무엇인가요?
student_score = {"이선호": 90, "김대호": 60}
student_score["김대호"] = 70
student_score["손콩떡"] = 75
print(student_score)
## 선택지
a) {"이선호": 90, "김대호": 60, "손콩떡": 75}
b) {"이선호": 90, "김대호": 70, "손콩떡": 75}
c) {"이선호": 90, "김대호": 70}
d) 오류 발생
Q4. 다음 코드에서 "이선호"를 삭제한 후의 결과는 무엇인가요?
student_score = {"이선호": 90, "김대호": 60, "손콩떡": 75}
del student_score["이선호"]
print(student_score)
## 선택지
a) {"김대호": 60, "손콩떡": 75}
b) {"이선호": None, "김대호": 60, "손콩떡": 75}
c) {"김대호": 60}
d) 오류 발생
Q5. 다음 딕셔너리에서 "김대호"의 영어 성적을 출력하는 코드는 무엇인가요?
# 수학, 영어 순서입니다.
student_score = {
"이선호": [90, 70],
"김대호": [40, 50],
"손콩떡": [70, 90]
}
## 선택지
a) print(student_score["김대호"][1])
b) print(student_score["김대호"][0])
c) print(student_score[1]["김대호"])
d) print(student_score.get("김대호", 1))
'파이썬 기초' 카테고리의 다른 글
| [ 파이썬 기초 ] 14. for문 (0) | 2025.03.06 |
|---|---|
| [ 파이썬 기초 ] 13. 튜플 & 집합 (2) | 2025.03.06 |
| [파이썬 기초] 10. 리스트 (0) | 2025.02.28 |
| [파이썬 기초] 11. 리스트 함수 (0) | 2025.02.28 |
| [파이썬 기초] 9. 논리 연산자 (1) | 2025.02.27 |