728x90
이 글에서 다루는 개념
Python의 자료구조 중 **딕셔너리(Dictionary)와 집합(Set)**을 학습합니다.
- 딕셔너리: 키-값(Key-Value) 쌍을 저장하는 자료구조
- 집합: 중복을 허용하지 않고, 순서가 없는 자료구조
- 딕셔너리와 집합의 기본 사용법 및 주요 메서드
- 실전 문제를 통해 딕셔너리와 집합을 활용하는 방법 익히기
1️⃣ 딕셔너리(Dictionary) 기초
딕셔너리는 키(Key)와 값(Value) 쌍을 저장하는 자료구조입니다.
중괄호 {}를 사용하여 생성하며, 각 키는 유일해야 합니다.
# 딕셔너리 선언
student = {"name": "Alice", "age": 25, "grade": "A"}
# 값 접근
print(student["name"]) # Alice
print(student["age"]) # 25
📌 딕셔너리 특징
- 키(Key)는 유일해야 하며, 값(Value)은 중복 가능
- 변경 가능(mutable) → 값을 추가, 수정, 삭제 가능
- 키로 값에 접근 (dict["key"])
# 값 변경
student["age"] = 26
# 새로운 키-값 추가
student["major"] = "Computer Science"
# 키 삭제
del student["grade"]
print(student)
# {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
2️⃣ 딕셔너리 주요 메서드
메서드 | 설명 | 예제 |
.keys() | 모든 키 반환 | dict.keys() |
.values() | 모든 값 반환 | dict.values() |
.items() | 모든 키-값 쌍 반환 | dict.items() |
.get(key, default) | 키의 값을 가져오며, 없으면 기본값 반환 | dict.get("age", 0) |
.pop(key) | 특정 키 삭제 및 값 반환 | dict.pop("name") |
.update(dict2) | 다른 딕셔너리 병합 | dict.update({"city": "Seoul"}) |
student = {"name": "Alice", "age": 25}
# 딕셔너리 메서드 사용
print(student.keys()) # dict_keys(['name', 'age'])
print(student.values()) # dict_values(['Alice', 25])
print(student.items()) # dict_items([('name', 'Alice'), ('age', 25)])
3️⃣ 집합(Set) 기초
집합(Set)은 중복을 허용하지 않는 자료구조이며, 순서가 없음
중괄호 {} 또는 set() 함수를 사용하여 생성합니다.
# 집합 선언
numbers = {1, 2, 3, 3, 4, 5}
print(numbers) # {1, 2, 3, 4, 5} (중복 제거)
📌 집합 특징
- 중복을 허용하지 않음
- 순서가 없어 인덱싱 불가능 (set[0] ❌)
- 수학적 집합 연산 가능 (합집합, 교집합, 차집합)
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1 | set2) # 합집합: {1, 2, 3, 4, 5, 6}
print(set1 & set2) # 교집합: {3, 4}
print(set1 - set2) # 차집합: {1, 2}
4️⃣ 집합(Set) 주요 메서드
메서드 | 설명 | 예제 |
.add(x) | 값 추가 | set.add(5) |
.remove(x) | 특정 값 제거 | set.remove(3) |
.discard(x) | 특정 값 제거 (없어도 에러 없음) | set.discard(10) |
.union(set2) | 합집합 반환 | set1.union(set2) |
.intersection(set2) | 교집합 반환 | set1.intersection(set2) |
.difference(set2) | 차집합 반환 | set1.difference(set2) |
fruits = {"apple", "banana"}
fruits.add("cherry")
fruits.remove("banana")
print(fruits) # {'apple', 'cherry'}
5️⃣ 딕셔너리 vs 집합 비교
특징 | 딕셔너리(Dictionary) | 집합(Set) |
기호 | {키: 값} | {값} |
중복 허용 | 키 중복 ❌, 값 중복 ⭕ | 중복 ❌ |
순서 유지 | Python 3.7+부터 O | X |
값 변경 가능 여부 | O (mutable) | O (mutable) |
활용 예시 | 키-값 저장, JSON 데이터 | 중복 제거, 집합 연산 |
📌 실전 문제: 딕셔너리와 집합 연습하기
✅ 문제 1: 딕셔너리 값 수정하기
📌 아래 딕셔너리에서 "age" 값을 30으로 변경하고 "city" 키를 추가하세요.
person = {"name": "Alice", "age": 25}
# 🔽 여기에 코드 작성
person["age"] = 30 # 값 변경
person["city"] = "Seoul" # 새 키 추가
print(person) # {'name': 'Alice', 'age': 30, 'city': 'Seoul'}
✅ 문제 2: 딕셔너리에서 특정 키 삭제하기
📌 아래 딕셔너리에서 "grade" 키를 삭제하고 결과를 출력하세요.
student = {"name": "Alice", "age": 25, "grade": "A"}
# 🔽 여기에 코드 작성
del student["grade"] # 또는 student.pop("grade")
print(student) # {'name': 'Alice', 'age': 25}
✅ 문제 3: 집합에서 중복 제거하기
📌 리스트 [1, 2, 2, 3, 4, 4, 5]에서 중복을 제거하고 출력하세요.
numbers = [1, 2, 2, 3, 4, 4, 5]
# 🔽 여기에 코드 작성
unique_numbers = set(numbers)
print(unique_numbers) # {1, 2, 3, 4, 5}
✅ 문제 4: 두 집합의 합집합, 교집합, 차집합 구하기
📌 집합 {1, 2, 3, 4}와 {3, 4, 5, 6}의 합집합, 교집합, 차집합을 구하세요.
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
# 🔽 여기에 코드 작성
print(set1 | set2) # {1, 2, 3, 4, 5, 6} (합집합)
print(set1 & set2) # {3, 4} (교집합)
print(set1 - set2) # {1, 2} (차집합)
728x90
'Data Engineering > python' 카테고리의 다른 글
EP06 | Python 클래스와 객체지향 프로그래밍 (OOP) (0) | 2025.03.19 |
---|---|
EP05 | Python 함수와 스코프 (Global, Local, Lambda 함수) (0) | 2025.03.19 |
EP03 | Python 자료구조 #1 | 리스트와 튜플 (0) | 2025.03.19 |
EP02 | Python 제어문 (조건문, 반복문) (0) | 2025.03.19 |
EP01 | Python 기본 문법 정리 (변수, 자료형, 연산자) (0) | 2025.03.19 |