파이썬 딕셔너리(Dictionary) 학습 요소 10가지

각 학습 요소별 심화 예제 코드 3개 + 모든 요소를 포함한 종합 예제 코드

1. 딕셔너리 생성 심화 예제 3개

{} 또는 dict()를 이용하여 key:value 구조의 데이터를 만든다.

예제 1. 중첩 딕셔너리 생성

Python 코드
students = {
    '101': {'이름': '민수', '점수': 92},
    '102': {'이름': '지아', '점수': 88},
    '103': {'이름': '하준', '점수': 95}
}

print(students['101']['이름'])
print(students['103']['점수'])
출력 결과
민수
95

예제 2. dict()와 zip()으로 생성

Python 코드
keys = ['국어', '수학', '영어']
values = [90, 95, 87]

score = dict(zip(keys, values))
print(score)
출력 결과
{'국어': 90, '수학': 95, '영어': 87}

예제 3. 딕셔너리 컴프리헨션

Python 코드
numbers = [1, 2, 3, 4, 5]
squares = {n: n ** 2 for n in numbers}

print(squares)
출력 결과
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

2. 값 조회 심화 예제 3개

키를 이용해 원하는 값을 꺼낸다.

예제 1. 중첩 값 조회

Python 코드
student = {
    '이름': '민수',
    '성적': {'수학': 95, '과학': 98}
}

print(student['성적']['과학'])
출력 결과
98

예제 2. 반복문으로 특정 값 조회

Python 코드
scores = {'민수': 92, '지아': 88, '하준': 95}

for name in scores:
    print(name, scores[name])
출력 결과
민수 92
지아 88
하준 95

예제 3. 조건에 맞는 값 조회

Python 코드
scores = {'민수': 92, '지아': 88, '하준': 95}

for name, score in scores.items():
    if score >= 90:
        print(name, score)
출력 결과
민수 92
하준 95

3. get() 메서드 심화 예제 3개

존재하지 않는 키를 조회할 때 오류 대신 기본값을 반환하게 한다.

예제 1. 기본값 지정

Python 코드
student = {'이름': '민수', '나이': 17}

print(student.get('학교', '정보 없음'))
출력 결과
정보 없음

예제 2. 누적 계산에 get() 사용

Python 코드
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
count = {}

for word in words:
    count[word] = count.get(word, 0) + 1

print(count)
출력 결과
{'apple': 3, 'banana': 2, 'orange': 1}

예제 3. 중첩 딕셔너리 안전 조회

Python 코드
data = {'user': {'name': '민수'}}

user = data.get('user', {})
print(user.get('name', '이름 없음'))
print(user.get('age', '나이 없음'))
출력 결과
민수
나이 없음

4. 데이터 추가 심화 예제 3개

새로운 키와 값을 딕셔너리에 넣는다.

예제 1. 학생 정보 추가

Python 코드
student = {'이름': '민수'}
student['학년'] = 2
student['반'] = 1

print(student)
출력 결과
{'이름': '민수', '학년': 2, '반': 1}

예제 2. 반복문으로 여러 값 추가

Python 코드
subjects = ['국어', '수학', '영어']
scores = {}

for subject in subjects:
    scores[subject] = 100

print(scores)
출력 결과
{'국어': 100, '수학': 100, '영어': 100}

예제 3. 중첩 딕셔너리에 항목 추가

Python 코드
classes = {'1반': {'민수': 90}}
classes['1반']['지아'] = 95
classes['2반'] = {'하준': 88}

print(classes)
출력 결과
{'1반': {'민수': 90, '지아': 95}, '2반': {'하준': 88}}

5. 데이터 수정 심화 예제 3개

이미 존재하는 키의 값을 새 값으로 바꾼다.

예제 1. 단일 값 수정

Python 코드
student = {'이름': '민수', '점수': 80}
student['점수'] = 95

print(student)
출력 결과
{'이름': '민수', '점수': 95}

예제 2. 조건에 따라 값 수정

Python 코드
scores = {'민수': 92, '지아': 58, '하준': 75}

for name in scores:
    if scores[name] < 60:
        scores[name] = 60

print(scores)
출력 결과
{'민수': 92, '지아': 60, '하준': 75}

예제 3. 중첩 딕셔너리 값 수정

Python 코드
student = {'이름': '민수', '성적': {'수학': 80, '과학': 90}}
student['성적']['수학'] += 10

print(student)
출력 결과
{'이름': '민수', '성적': {'수학': 90, '과학': 90}}

6. 데이터 삭제 심화 예제 3개

del, pop(), clear() 등을 사용해 데이터를 제거한다.

예제 1. del로 삭제

Python 코드
student = {'이름': '민수', '나이': 17, '학교': '과학고'}
del student['나이']

print(student)
출력 결과
{'이름': '민수', '학교': '과학고'}

예제 2. pop()으로 삭제하며 값 받기

Python 코드
student = {'이름': '민수', '점수': 92}
removed = student.pop('점수')

print(removed)
print(student)
출력 결과
92
{'이름': '민수'}

예제 3. 조건에 맞는 항목 삭제

Python 코드
scores = {'민수': 92, '지아': 58, '하준': 75}
low_students = [name for name, score in scores.items() if score < 60]

for name in low_students:
    del scores[name]

print(scores)
출력 결과
{'민수': 92, '하준': 75}

7. keys() 심화 예제 3개

딕셔너리의 모든 키를 확인한다.

예제 1. 키 목록 출력

Python 코드
student = {'이름': '민수', '나이': 17, '학교': '과학고'}

for key in student.keys():
    print(key)
출력 결과
이름
나이
학교

예제 2. 키 존재 여부 확인

Python 코드
student = {'이름': '민수', '나이': 17}

if '나이' in student.keys():
    print('나이 정보 있음')
출력 결과
나이 정보 있음

예제 3. 키를 리스트로 변환

Python 코드
score = {'국어': 90, '수학': 95, '영어': 87}
subjects = list(score.keys())

print(subjects)
print(subjects[0])
출력 결과
['국어', '수학', '영어']
국어

8. values() 심화 예제 3개

딕셔너리의 모든 값을 확인한다.

예제 1. 값 목록 출력

Python 코드
score = {'국어': 90, '수학': 95, '영어': 87}

for value in score.values():
    print(value)
출력 결과
90
95
87

예제 2. 평균 계산

Python 코드
score = {'국어': 90, '수학': 95, '영어': 87}
avg = sum(score.values()) / len(score)

print(round(avg, 2))
출력 결과
90.67

예제 3. 특정 값 포함 여부

Python 코드
student = {'이름': '민수', '학교': '과학고'}

if '과학고' in student.values():
    print('과학고 학생입니다.')
출력 결과
과학고 학생입니다.

9. items() 심화 예제 3개

키와 값을 동시에 꺼내 반복 처리한다.

예제 1. 키와 값 함께 출력

Python 코드
student = {'이름': '민수', '나이': 17, '학교': '과학고'}

for key, value in student.items():
    print(key, ':', value)
출력 결과
이름 : 민수
나이 : 17
학교 : 과학고

예제 2. 조건 필터링

Python 코드
scores = {'민수': 92, '지아': 88, '하준': 95}

high = {name: score for name, score in scores.items() if score >= 90}
print(high)
출력 결과
{'민수': 92, '하준': 95}

예제 3. 값 기준 정렬

Python 코드
scores = {'민수': 92, '지아': 88, '하준': 95}

rank = sorted(scores.items(), key=lambda x: x[1], reverse=True)
print(rank)
출력 결과
[('하준', 95), ('민수', 92), ('지아', 88)]

10. 딕셔너리 병합 심화 예제 3개

여러 딕셔너리를 하나로 합친다.

예제 1. | 연산자 사용

Python 코드
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}

result = d1 | d2
print(result)
출력 결과
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

예제 2. update() 사용

Python 코드
student = {'이름': '민수'}
extra = {'나이': 17, '학교': '과학고'}

student.update(extra)
print(student)
출력 결과
{'이름': '민수', '나이': 17, '학교': '과학고'}

예제 3. 겹치는 키 병합

Python 코드
old = {'수학': 80, '과학': 90}
new = {'수학': 95, '영어': 87}

merged = old | new
print(merged)
출력 결과
{'수학': 95, '과학': 90, '영어': 87}

딕셔너리 종합 예제 코드 1개

아래 코드는 딕셔너리 생성, 조회, get(), 추가, 수정, 삭제, keys(), values(), items(), 병합을 모두 포함한 학생 성적 관리 종합 예제입니다.

종합 예제: 학생 성적 관리 프로그램

Python 코드
# 딕셔너리 종합 예제: 학생 성적 관리 프로그램

students = {
    '101': {'이름': '민수', '성적': {'국어': 90, '수학': 95}},
    '102': {'이름': '지아', '성적': {'국어': 88, '수학': 92}}
}

# 1. 데이터 추가
students['103'] = {'이름': '하준', '성적': {'국어': 85, '수학': 97}}

# 2. 데이터 수정
students['101']['성적']['국어'] = 93

# 3. get()으로 안전하게 조회
search_id = '104'
student = students.get(search_id, {'이름': '없음', '성적': {}})
print('조회 결과:', student['이름'])

# 4. keys(), values(), items() 활용
for sid, info in students.items():
    name = info['이름']
    scores = info['성적']
    total = sum(scores.values())
    avg = total / len(scores)
    info['평균'] = avg
    print(sid, name, scores, '평균:', avg)

# 5. 조건 필터링
excellent = {}
for sid, info in students.items():
    if info['평균'] >= 90:
        excellent[sid] = info['이름']

print('우수 학생:', excellent)

# 6. 병합
class_info = {'담임': '김교사', '학급': '2학년 1반'}
summary = class_info | {'학생수': len(students)}
print('학급 요약:', summary)

# 7. 삭제
removed = students.pop('102')
print('삭제된 학생:', removed['이름'])

# 8. 최종 출력
print('최종 학생 목록')
for sid, info in students.items():
    print(sid, info)
주요 실행 흐름
조회 결과: 없음
101 민수 {'국어': 93, '수학': 95} 평균: 94.0
102 지아 {'국어': 88, '수학': 92} 평균: 90.0
103 하준 {'국어': 85, '수학': 97} 평균: 91.0
우수 학생: {'101': '민수', '102': '지아', '103': '하준'}
학급 요약: {'담임': '김교사', '학급': '2학년 1반', '학생수': 3}
삭제된 학생: 지아
최종 학생 목록

핵심 정리표

번호학습 요소핵심 내용
1딕셔너리 생성{} 또는 dict()를 이용하여 key:value 구조의 데이터를 만든다.
2값 조회키를 이용해 원하는 값을 꺼낸다.
3get() 메서드존재하지 않는 키를 조회할 때 오류 대신 기본값을 반환하게 한다.
4데이터 추가새로운 키와 값을 딕셔너리에 넣는다.
5데이터 수정이미 존재하는 키의 값을 새 값으로 바꾼다.
6데이터 삭제del, pop(), clear() 등을 사용해 데이터를 제거한다.
7keys()딕셔너리의 모든 키를 확인한다.
8values()딕셔너리의 모든 값을 확인한다.
9items()키와 값을 동시에 꺼내 반복 처리한다.
10딕셔너리 병합여러 딕셔너리를 하나로 합친다.
▲ 위로