파이썬 튜플과 딕셔너리, 무엇이 다를까?
튜플(tuple)과 딕셔너리(dictionary)는 파이썬에서 가장 널리 사용되는 자료구조지만, 설계 목적과 동작 방식이 완전히 다릅니다. 두 자료구조의 핵심적인 차이점을 하나씩 살펴보겠습니다.
튜플(Tuple)의 특징
튜플은 여러 값을 하나로 묶어 관리하는 불변(immutable) 시퀀스 자료형입니다. 주요 특징은 다음과 같습니다.
- 요소의 순서가 그대로 유지됩니다.
- 한 번 생성하면 내용을 추가, 삭제, 수정할 수 없습니다.
- 모든 데이터 타입을 담을 수 있으며, 서로 다른 타입을 섞어 저장해도 문제없습니다.
- 0부터 시작하는 숫자 인덱스를 통해 요소에 접근합니다.
딕셔너리(Dictionary)의 특징
파이썬 딕셔너리는 해시 테이블(hash table)을 기반으로 구현된 자료구조로, 키와 값의 쌍으로 데이터를 저장합니다.
- 기본적으로 순서가 보장되지 않습니다. (Python 3.7 이상에서는 삽입 순서가 유지되지만, 딕셔너리의 본질은 순서가 아닌 키-값 매핑입니다.)
- 모든 항목은 반드시 키(key)와 값(value)의 쌍으로 구성됩니다.
- 숫자 인덱스가 아닌 키를 사용해 값에 접근합니다.
- 항목을 자유롭게 추가, 수정, 삭제할 수 있는 가변(mutable) 자료형입니다.
- 키로는 해시 가능한(hashable) 타입만 사용할 수 있습니다. 즉, 문자열, 숫자, 튜플은 키가 될 수 있지만 리스트나 딕셔너리는 키로 쓸 수 없습니다. 값에는 어떤 타입이든(다른 딕셔너리 포함) 자유롭게 사용할 수 있습니다.
두 자료구조 한눈에 비교하기
| 구분 | 튜플 | 딕셔너리 |
|---|---|---|
| 변경 가능 여부 | 불변(immutable) | 가변(mutable) |
| 접근 방식 | 숫자 인덱스 | 키(key) |
| 구조 | 값의 나열 | 키-값 쌍 |
| 내부 구현 | 배열 기반 | 해시 테이블 |
생성 예시
흥미롭게도 두 자료구조 모두 컴프리헨션(comprehension)을 활용해 생성할 수 있습니다. 아래 예시를 확인해 보세요.
# 튜플 예시 — 다양한 타입을 함께 저장
my_tuple = (1, 'a', (3, 6, 8), 'string')
# 딕셔너리 예시 — 키와 값의 쌍으로 저장
my_dict = {'foo': [1, 2, 3], 'bar': 'baz'}
정리하면, 순서대로 고정된 데이터를 저장할 때는 튜플을, 키를 통해 빠르게 값을 찾아야 할 때는 딕셔너리를 사용하는 것이 좋습니다. 각 자료구조의 특성을 이해하고 상황에 맞게 선택하면 더 효율적이고 읽기 좋은 코드를 작성할 수 있습니다.