개발/Python

[초급반] Step 6. 딕셔너리(Dictionary)와 셋(Set): 키-값 구조와 중복 없는 데이터

ophelisis 2025. 12. 16. 17:43
반응형

안녕하세요! 파이썬 학습 여섯 번째 시간입니다. 지난 시간에는 순서가 있는 자료 구조인 리스트와 튜플을 배웠습니다.

오늘은 파이썬에서 데이터를 더 효율적이고 빠르게 관리할 수 있게 해주는 순서가 없는 자료 구조인 **딕셔너리(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) - 중복 제거, 집합 연산
반응형