반응형
안녕하세요! 파이썬 학습 여섯 번째 시간입니다. 지난 시간에는 순서가 있는 자료 구조인 리스트와 튜플을 배웠습니다.
오늘은 파이썬에서 데이터를 더 효율적이고 빠르게 관리할 수 있게 해주는 순서가 없는 자료 구조인 **딕셔너리(Dictionary)**와 **셋(Set)**을 알아보겠습니다.
1. 딕셔너리 (Dictionary): 검색에 최적화된 '키-값' 구조
딕셔너리는 이름처럼 현실 세계의 사전과 같습니다. **키(Key)**를 통해 **값(Value)**을 찾아내는 구조이며, 중괄호 {} 안에 키: 값 형태로 데이터를 저장합니다.
1-1. 딕셔너리 생성 및 접근
리스트가 인덱스(순서)로 접근한다면, 딕셔너리는 **키(Key)**라는 고유한 이름으로 접근합니다.
Python
# 딕셔너리 생성 (이름: "Alice", 나이: 25)
user_profile = {
"name": "Alice",
"age": 25,
"city": "Seoul"
}
# 키를 사용하여 값 접근
print(user_profile["name"]) # 결과: Alice
# 키와 값의 쌍은 변경 및 추가 가능 (가변적)
user_profile["age"] = 26 # 값 수정
user_profile["email"] = "alice@example.com" # 새로운 키-값 추가
print(user_profile)
# 결과: {'name': 'Alice', 'age': 26, 'city': 'Seoul', 'email': 'alice@example.com'}
규칙: 딕셔너리의 **키(Key)**는 절대로 중복될 수 없으며, 불변적인 값 (문자열, 숫자, 튜플)만 사용할 수 있습니다.
1-2. 딕셔너리 주요 메서드
딕셔너리의 키, 값, 또는 키-값 쌍을 순회할 때 유용합니다.
| 메서드 | 기능 | 예시 | 반환되는 형태 |
| keys() | 모든 키를 반환 | user_profile.keys() | ('name', 'age', 'city') |
| values() | 모든 값을 반환 | user_profile.values() | ('Alice', 25, 'Seoul') |
| items() | (키, 값) 쌍을 튜플 형태로 반환 | user_profile.items() | [('name', 'Alice'), ...] |
| get() | 키로 값을 찾음 (키가 없으면 오류 대신 None 반환) | user_profile.get("score") | None (오류 방지) |
1-3. for 반복문과 딕셔너리
딕셔너리를 for 문으로 순회하면 기본적으로 키를 하나씩 가져옵니다.
Python
for key in user_profile:
print(f"키: {key}, 값: {user_profile[key]}")
2. 셋 (Set): 중복을 허용하지 않는 '집합'
셋은 수학의 집합과 동일한 개념이며, **중괄호 {}**를 사용하여 만듭니다. 셋의 가장 큰 특징은 중복된 값을 허용하지 않는다는 것입니다.
2-1. 셋의 특징: 중복 제거 및 순서 없음
Python
# 리스트에서 중복을 제거할 때 셋을 활용
my_list = [1, 2, 2, 3, 4, 4, 4]
my_set = set(my_list) # set() 함수를 사용하여 리스트를 셋으로 변환
print(my_set) # 결과: {1, 2, 3, 4} (순서가 무작위일 수 있음)
# 셋에 요소 추가 및 삭제
my_set.add(5)
my_set.remove(1)
2-2. 셋의 활용: 집합 연산
셋은 중복을 제거하는 것 외에도 두 개 이상의 셋 간의 교집합, 합집합, 차집합 연산을 수행할 때 매우 강력합니다.
| 연산자 | 메서드 | 기능 |
| & | intersection() | 교집합 (둘 다 포함된 요소) |
| ` | ` | union() |
| - | difference() | 차집합 (앞 셋에만 있는 요소) |
Python
a = {1, 2, 3}
b = {3, 4, 5}
# 교집합: {3}
print(a & b)
3. 핵심 자료 구조 총정리
| 자료 구조 | 특징 | 표기법 | 가변성 | 주요 접근 방식 | 용도 |
| 리스트 | 순서 O, 중복 O | [] | 가변적 (Mutable) | 인덱스 | 동적인 데이터 목록 |
| 튜플 | 순서 O, 중복 O | () | 불변적 (Immutable) | 인덱스 | 고정된 데이터 묶음 |
| 딕셔너리 | 순서 X (Python 3.7+ O), 중복 X (키) | {key: value} | 가변적 (Mutable) | 키 (Key) | 빠른 검색, 데이터 매핑 |
| 셋 | 순서 X, 중복 X | {} | 가변적 (Mutable) | - | 중복 제거, 집합 연산 |
반응형
'개발 > Python' 카테고리의 다른 글
| [초급반] Step 8. 파일 입출력 (File I/O): 텍스트 파일 읽고 쓰기 (0) | 2025.12.16 |
|---|---|
| [초급반] Step 7. 함수(Function) 정의 및 활용: 코드를 모듈화하는 방법 (0) | 2025.12.16 |
| [초급반] Step 5. 리스트(List)와 튜플(Tuple): 순서가 있는 데이터 다루기 (0) | 2025.12.16 |
| [초급반] Step 4. 반복문 정복: for와 while로 코드 자동화하기 (0) | 2025.12.16 |
| [초급반] Step 3. 제어문으로 흐름 만들기: if/else, elif 조건문 활용 (0) | 2025.12.15 |