파이썬 튜플과 딕셔너리, 한 번에 정리
리스트를 막 끝내고 나면 꼭 드는 생각이 있어요. 데이터를 묶는 건 이거 하나면 충분한 거 아닌가? 저도 그랬거든요. 근데 파이썬에는 리스트 말고도 튜플, 딕셔너리라는 애들이 따로 있어요.
왜 굳이 나눠놨는지, 직접 보시면 바로 감이 오실 거예요.
파이썬 튜플이란? (python tuple)
튜플은 리스트랑 거의 똑같이 생겼는데, 한 번 만들면 바꿀 수 없는 친구예요. 괄호도 대괄호가 아니라 소괄호를 씁니다.
# 좌표 하나를 튜플로 표현
point = (10, 20)
print(point[0]) # 10
print(point[1]) # 20
인덱스로 꺼내는 건 리스트랑 똑같죠. 근데 여기서 값을 바꾸려고 하면 바로 에러가 나요.
point = (10, 20)
point[0] = 100 # TypeError: 'tuple' object does not support item assignment
"아니 왜 못 바꾸게 만들어놨지?" 싶으시죠. 근데 이게 오히려 장점이에요.
파이썬 튜플은 왜 쓰는 걸까요
좌표 (위도, 경도)나 색상 (255, 0, 0) 같은 값을 생각해보세요. 위도 하나만 몰래 바뀌면 완전히 다른 지점이 되잖아요. 이렇게 묶음으로 의미가 있는 값은 리스트보다 튜플이 어울려요. "이거 건드리지 마세요"를 코드로 표시하는 셈이죠.
또 나중에 배울 함수에서 값을 여러 개 돌려줄 때도 내부적으로 튜플이 쓰여요. 그래서 이 친구를 알고 넘어가야 합니다.
한 줄로 여러 변수에 값 넣기 (언패킹)
튜플의 진짜 매력은 여기에 있어요.
# 한 줄로 x, y에 값 할당
x, y = (10, 20)
print(x, y) # 10 20
# 두 값 교환도 한 줄이면 끝
a, b = 1, 2
a, b = b, a
print(a, b) # 2 1
다른 언어에서 값 교환할 때 임시 변수 만들고 복잡하게 하는데, 파이썬은 이게 끝이에요. 처음 보면 마법 같죠.
조심할 포인트: 요소 1개짜리 튜플
이거 처음에 다들 한 번씩 헷갈려요.
a = (1) # 이건 그냥 정수 1 (괄호는 그냥 괄호)
b = (1,) # 이게 진짜 요소 1개인 튜플
print(type(a)) # <class 'int'>
print(type(b)) # <class 'tuple'>
튜플을 만드는 건 괄호가 아니라 쉼표예요. 요소가 하나면 쉼표 꼭 찍어주셔야 합니다.
파이썬 딕셔너리: 이름표 붙은 상자
이제 딕셔너리예요. 리스트가 "번호표 뽑고 줄 서기"라면, 딕셔너리는 이름 부르면 바로 찾기입니다.
국어사전을 생각해보세요. 단어(key)를 찾으면 뜻(value)이 나오죠. 주소록도 마찬가지예요. 이름(key) → 전화번호(value).
# 학생 점수표
scores = {"철수": 80, "영희": 95, "민수": 72}
# 이름으로 점수 꺼내기
print(scores["영희"]) # 95
리스트처럼 scores[0] 하는 게 아니라, 이름을 직접 넣어서 꺼내요. 이게 훨씬 직관적이잖아요.
파이썬 딕셔너리 추가, 수정, 삭제
이건 더 쉬워요.
scores = {"철수": 80, "영희": 95}
# 새 학생 추가
scores["지훈"] = 88
# 기존 값 수정 (문법이 추가랑 똑같아요)
scores["철수"] = 85
# 삭제
del scores["영희"]
print(scores)
# {'철수': 85, '지훈': 88}
추가랑 수정이 같은 문법이라는 게 포인트예요. key가 있으면 덮어쓰고, 없으면 새로 만들어요.
없는 key를 꺼내면? KeyError
여기서 초보자가 제일 많이 넘어져요.
scores = {"철수": 80}
print(scores["영희"]) # KeyError: '영희'
있을지 없을지 모를 때는 .get()을 쓰시는 습관을 들이세요.
scores = {"철수": 80}
print(scores.get("영희")) # None (에러 대신 None)
print(scores.get("영희", 0)) # 0 (없으면 0을 돌려줘)
저도 실무에서 .get() 엄청 자주 씁니다. 에러 한 번 잘못 나면 프로그램이 그냥 멈춰버리거든요.
전체를 훑어볼 때: items()
딕셔너리에 있는 모든 key와 value를 한 번에 보고 싶을 땐 .items()를 쓰시면 됩니다.
scores = {"철수": 80, "영희": 95, "민수": 72}
# 가장 많이 쓰는 패턴
for name, score in scores.items():
print(f"{name}: {score}점")
# 출력
# 철수: 80점
# 영희: 95점
# 민수: 72점
for name, score in scores.items() — 이 형태는 진짜 자주 나와요. 튜플 언패킹이 여기서 자연스럽게 쓰이고 있는 거예요.
참고로 파이썬 3.7부터는 딕셔너리도 넣은 순서대로 나와요. 옛날 교재에 "딕셔너리는 순서가 없다"고 적혀 있으면 지금은 옛말이라고 보시면 됩니다.
리스트, 튜플, 딕셔너리 언제 뭘 쓰지?
| 구분 | 리스트 | 튜플 | 딕셔너리 |
|---|---|---|---|
| 괄호 | [] |
() |
{} |
| 수정 | 가능 | 불가 | 가능 |
| 접근 | 인덱스 | 인덱스 | key(이름) |
| 쓰는 곳 | 같은 성격 데이터 모음 | 바뀌면 안 되는 묶음 | 이름과 값의 짝 |
이름 목록은 리스트, 좌표는 튜플, 학생별 점수는 딕셔너리. 대충 이 그림만 머리에 있으면 됩니다.
실습 과제
친구 3명의 이름과 나이를 딕셔너리로 만들어 보세요. 그리고 이름을 입력하면 나이를 출력하되, 없는 이름이면 "등록되지 않은 사람입니다"가 나오도록 만들어보세요. 힌트는 .get()이에요.
막히는 부분 있으시면 댓글로 남겨주세요.
다음 글 예고
여기까지가 데이터를 담는 그릇 3종 세트예요. 리스트, 튜플, 딕셔너리. 이제 이 그릇들을 가지고 실제로 뭔가를 하는 도구가 필요한데, 그게 바로 함수(def, return)예요.
다음 글에서는 함수를 만들어 값을 여러 개 돌려받는 법도 보여드릴 텐데, 거기서 오늘 배운 튜플 언패킹이 아주 멋지게 다시 등장합니다.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
'Application > Python' 카테고리의 다른 글
| [Python] 파이썬 함수 심화 - 매개변수와 기본값 한 번에 정리 (0) | 2026.04.28 |
|---|---|
| [Python] 파이썬 함수 기초: def로 만들고 return으로 돌려받기 (0) | 2026.04.27 |
| [Python] 파이썬 리스트 완벽 정리: 초보도 한 번에 이해하는 python list 사용법 (0) | 2026.04.22 |
| [Python] 파이썬 반복문, for문과 while 완벽 정리 (0) | 2026.04.21 |
| [Python] 파이썬 조건문: if, elif, else 쉽게 이해하기 (0) | 2026.04.18 |