반응형
📘 Day 12. 딕셔너리 메서드와 실전 활용
1. 딕셔너리 주요 메서드
메서드 설명 예시
get(key, default) | key로 값 검색. 없으면 기본값 반환 | d.get("score", 0) |
keys() | key 목록 반환 | d.keys() |
values() | value 목록 반환 | d.values() |
items() | (key, value) 쌍 목록 반환 | d.items() |
update(other_dict) | 다른 딕셔너리와 병합 | d.update(d2) |
pop(key) | key로 항목 삭제 후 value 반환 | v = d.pop("name") |
clear() | 전체 항목 삭제 | d.clear() |
copy() | 얕은 복사 | d2 = d.copy() |
❗ get()은 안전하게 값을 검색할 때 유용하며, 존재하지 않는 key를 조회해도 오류가 발생하지 않음.
🔁 깊은 복사 (deepcopy)
- 중첩 구조까지 완전히 복사할 때 사용
import copy
d2 = copy.deepcopy(d1)
2. 딕셔너리 순회 방법
✅ key만 순회
for k in student.keys():
print(k)
✅ value만 순회
for v in student.values():
print(v)
✅ key와 value를 함께 순회
for k, v in student.items():
print(k, v)
3. 딕셔너리 비교
- == : 두 딕셔너리의 key와 value가 모두 같으면 True
- != : 같지 않으면 True
a = {"name": "홍길동"}
b = {"name": "홍길동"}
print(a == b) # True
4. 딕셔너리 컴프리헨션
기본 형식
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
조건 포함
evens = {x: x**2 for x in range(10) if x % 2 == 0}
5. 실전 예제
예제 1. 학생 성적 등록 및 출력
입력:
- 이름, 점수1, 점수2 (5명)
출력:
- 이름, 총점, 평균
students = {}
for _ in range(5):
name = input("학생 이름: ")
score1 = int(input("점수1: "))
score2 = int(input("점수2: "))
total = score1 + score2
avg = total / 2
students[name] = {"점수1": score1, "점수2": score2, "총점": total, "평균": avg}
print("\n성적 일람표")
print("이름\t점수1\t점수2\t총점\t평균")
for name, data in students.items():
print(f"{name}\t{data['점수1']}\t{data['점수2']}\t{data['총점']}\t{data['평균']:.2f}")
예제 2. 이름으로 성적 검색
while True:
search = input("\n검색할 이름 (종료: exit): ")
if search == "exit":
break
if search in students:
data = students[search]
print(f"{search}의 성적 → 점수1: {data['점수1']}, 점수2: {data['점수2']}, 총점: {data['총점']}, 평균: {data['평균']:.2f}")
else:
print("해당 학생이 존재하지 않습니다.")
✅ 오늘의 정리
항목 설명
dict.get() | 키 검색 (오류 없이 기본값 반환 가능) |
update() | 다른 딕셔너리 병합 |
pop() | 특정 키 삭제 및 값 반환 |
순회 | keys(), values(), items() 활용 |
복사 | 얕은 복사 vs 깊은 복사 |
dict comprehension | 반복문과 조건을 이용한 dict 생성 |
실습 | 성적 등록, 총점·평균 계산, 검색 기능 구현 |
다음 차시에서는 중복을 허용하지 않는 자료형인 집합(set)과, 재사용 가능한 코드 작성의 핵심인 함수(function) 개념을 함께 학습합니다.
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
14. 함수(Function)의 정의, 구조, 그리고 호출 방식 (1) | 2025.04.04 |
---|---|
13. 집합(Set)과 함수(Function)의 기초 (1) | 2025.04.03 |
11. 딕셔너리(dict)의 개념과 활용 (1) | 2025.04.01 |
10. 리스트 복사와 고급 활용 (0) | 2025.03.31 |
09. 리스트의 활용과 정렬 (0) | 2025.03.30 |