728x90
반응형
개요
파이썬에는 다양한 자료구조가 있습니다. 그중에서도 튜플(Tuple)과 딕셔너리(Dictionary)는 실무에서 자주 사용되는 핵심 자료형입니다. 이 둘의 특징과 활용법을 제대로 이해하고 사용하면 코드를 더 효율적으로 작성할 수 있습니다. 지금부터 튜플과 딕셔너리의 정의, 사용 이유, 그리고 실제 활용 예시까지 함께 살펴보겠습니다.
튜플(Tuple)
튜플의 정의
튜플은 여러 개의 데이터를 순서대로 나열하는 자료형입니다. 괄호()를 사용하여 데이터를 묶습니다. 리스트와 비슷하지만, 가장 큰 차이점은 불변성(Immutable)에 있습니다. 한 번 생성된 튜플은 요소를 수정, 추가, 삭제할 수 없습니다. 튜플의 각 요소는 고유한 위치인 인덱스를 통해 접근할 수 있습니다.
튜플을 사용하는 이유
- 데이터의 안전성 보장 : 값이 절대 변하면 안되는 경우, 튜플을 사용하면 데이터가 실수로 변경되는 것을 방지할 수 있습니다. 지도상의 좌표나 개인 식별정보(주민등록번호) 와 같은 정적인 데이터에 적합합니다.
- 메모리 효율 및 성능 : 불변 객체인 튜플을 리스트보다 메모리를 적게 사용하고, 내부적으로 최적화되어 있어 처리 속도가 더 빠릅니다. 대량의 변경 불가능한 데이터를 다룰 때 유용합니다.
- 딕셔너리 키로 활용 가능 : 튜플은 변경되지 않는 해시 가능한 객체입니다. 이 고유한 특성 덕분에 딕셔너리의 키나 집합의 원소로 사용할 수 있습니다. 반면, 가변 객체인 리스트는 딕셔너리의 키로 사용할 수 없습니다.
튜플 사용 예시 코드
# 사용자 정보를 튜플로 저장 (데이터 변경 방지)
user_info = ('홍길동', '901234-1234567')
# 지도에서 경도, 위도 좌표를 튜플로 표현
location = (37.5665, 126.9780)
# 함수가 여러 값을 튜플 형태로 반환
def get_user_details():
name = "김철수"
age = 30
city = "서울"
return name, age, city # 여러 값을 튜플 형태로 반환
details = get_user_details()
print(details) # ('김철수', 30, '서울')
딕셔너리(Dictionary)
빠르고 유연한 키-값 데이터
딕셔너리의 정의
딕셔너리는 키(key)와 값(value)이 한 쌍으로 이루어진 자료형입니다. 중괄호{} 를 사용하여 key: value 형태로 데이터를 저장합니다. 딕셔너리는 순서가 없으며, 키는 중복될 수 없습니다.
딕셔너리를 사용하는 이유
- 매우 빠른 검색 속도 : 딕셔너리는 내부적으로 해시 테이블 구조를 사용합니다. 이 덕분에 키를 통해 원하는 값을 평균 0(1)의 시간 복잡도로 매우 빠르게 찾을 수 있습니다. 데이터의 양이 많아도 검색 속도 저하를 걱정할 필요가 없습니다.
- 데이터 중복 방지 : 딕셔너리는 키가 유일해야 하므로, 데이터의 중복을 사전에 방지하는 효과가 있습니다.
- 높은 가독성 : 키를 통해 데이터에 의미를 부여할 수 있어 코드의 가독성이 크게 향상됩니다. user_profile['name'] 과 같이 직관적으로 데이터를 다룰 수 있어 유지보수가 용이합니다.
딕셔너리 사용 예시 코드
# 사용자 프로필 정보를 딕셔너리로 저장
user_profile = {
'name': '이영희',
'age': 25,
'city': '부산',
'email': 'yhlee@example.com'
}
# 키를 통해 값에 접근
print(user_profile['name']) # '이영희'
# 새로운 키-값 쌍 추가
user_profile['job'] = '디자이너'
print(user_profile)
# 값 수정
user_profile['age'] = 26
print(user_profile)
튜플 VS 리스트
항목 | 튜플(tuple) | 리스트(list) |
가변성 | 불변 (immutable) | 가변 (mutable) |
성능 | 더 빠름 | 상대적으로 느림 |
메모리 사용 | 더 적음 | 상대적으로 많음 |
사용 예 | 고정된 데이터, 딕셔너리 키 | 데이터 추가/수정이 필요한 경우 |
문법 | () 또는 쉼표 , | [] |
반응형
'Dev > Python' 카테고리의 다른 글
[Python] 빛과 그림자 : GIL(Global Interpreter Lock) 파헤치기 (0) | 2025.10.03 |
---|---|
[Python] 파이썬 이터레이터와 제너레이터: 메모리를 잡아먹는 괴물 리스트 대신 현명하게 데이터 다루기 (0) | 2025.09.27 |
[Python] Python 예외 처리 (0) | 2025.09.26 |
[Python] 인자 규약 (0) | 2025.09.25 |
[Python] 함수 시그니처 (0) | 2025.09.24 |