08. 튜플과 딕셔너리
튜플의 불변성과 딕셔너리의 키-값 구조를 익힌다
목차
스포츠 데이터로 배우는 파이썬 기초
학습 목표
- 튜플의 개념과 리스트와의 차이점 이해
- 딕셔너리의 키-값 구조 이해
- 딕셔너리 요소 추가·수정·삭제
- for문에서 딕셔너리 순회
1. 튜플(Tuple)이란?
정의
- 리스트와 사용법이 거의 같음
- 소괄호
()사용 - 한번 생성하면 추가·수정·삭제 불가 (불변, immutable)
리스트 vs 튜플
| 구분 | 리스트 | 튜플 |
|---|---|---|
| 기호 | [] | () |
| 수정 가능 | O | X |
| 용도 | 변하는 데이터 | 변하지 않는 데이터 |
실습 8-1. 튜플 생성과 인덱싱
menu = ('coffee', 'milk', 'tea', 'cider')
print(menu)
print(menu[0]) # coffee
print(menu[2]) # tea
print(menu[0:3]) # 앞 3개
('coffee', 'milk', 'tea', 'cider')
coffee
tea
('coffee', 'milk', 'tea')
실습 8-2. 튜플 수정 시도 → TypeError
try:
menu = ('coffee', 'milk', 'tea', 'cider')
menu[1] = 'cola' # 수정 시도
except TypeError as e:
print('오류 발생:', e)
오류 발생: 'tuple' object does not support item assignment
실습 8-3. 튜플 병합과 길이
tuple1 = ('apple', 'banana', 'cherry')
tuple2 = ('orange', 'melon', 'strawberry')
# 병합 (+)
tuple3 = tuple1 + tuple2
print(tuple3)
print('길이:', len(tuple3))
# for문 순회
for x in tuple1:
print(x)
('apple', 'banana', 'cherry', 'orange', 'melon', 'strawberry')
길이: 6
apple
banana
cherry
2. 딕셔너리(Dictionary)란?
정의
- 키(Key) 와 값(Value) 쌍으로 데이터를 저장
- 중괄호
{}사용 - 키로 값을 빠르게 찾을 수 있음 — 사전(Dictionary)과 같은 구조
기본 문법
딕셔너리 = {'키1': 값1, '키2': 값2, ...}
딕셔너리['키1'] → 값1
주요 특징
- 키는 고유해야 함 (중복 불가)
- 값은 중복 가능
- 순서가 있음 (Python 3.7 이상)
실습 8-4. 딕셔너리 기본 사용법
members = {'name': '안지영', 'age': 30, 'email': 'jiyoung@korea.com'}
print(members)
print(members['name']) # 키로 값 접근
print(members['age'])
print('길이:', len(members))
{'name': '안지영', 'age': 30, 'email': 'jiyoung@korea.com'}
안지영
30
길이: 3
3. 딕셔너리 요소 추가·수정·삭제
문법
| 작업 | 코드 |
|---|---|
| 추가/수정 | 딕셔너리['키'] = 값 |
| 삭제 | del 딕셔너리['키'] |
실습 8-5. 추가·수정·삭제
scores = {'kor': 95, 'eng': 85, 'math': 90, 'science': 80}
print('원본:', scores)
# 수정
scores['kor'] = 70
print('수정 후 국어:', scores['kor'])
# 추가
scores['music'] = 100
print('추가 후:', scores)
# 삭제
del scores['science']
print('삭제 후:', scores)
원본: {'kor': 95, 'eng': 85, 'math': 90, 'science': 80}
수정 후 국어: 70
추가 후: {'kor': 70, 'eng': 85, 'math': 90, 'science': 80, 'music': 100}
삭제 후: {'kor': 70, 'eng': 85, 'math': 90, 'music': 100}
4. for문에서 딕셔너리 사용
기본 구조
for key in 딕셔너리:
print(key, 딕셔너리[key])
for key in 딕셔너리:→ 키를 하나씩 순회딕셔너리[key]→ 해당 키의 값
실습 8-6. 딕셔너리 순회
phones = {
'갤럭시노트8': 2017,
'갤럭시S9': 2018,
'갤럭시노트10': 2019,
'갤럭시S20': 2020
}
print(phones)
for key in phones:
print('%s => %s' % (key, phones[key]))
print('항목 수:', len(phones))
{'갤럭시노트8': 2017, '갤럭시S9': 2018, '갤럭시노트10': 2019, '갤럭시S20': 2020}
갤럭시노트8 => 2017
갤럭시S9 => 2018
갤럭시노트10 => 2019
갤럭시S20 => 2020
항목 수: 4
실습 8-7. 스포츠 성적 딕셔너리
# 선수 성적 딕셔너리
player = {
'name': '손흥민',
'team': 'Tottenham',
'goals': 23,
'assists': 7,
'matches': 35
}
for key in player:
print(f'{key}: {player[key]}')
# 공격포인트 계산
attack_points = player['goals'] + player['assists']
print(f"\n공격포인트: {attack_points}")
name: 손흥민
team: Tottenham
goals: 23
assists: 7
matches: 35
공격포인트: 30