Data Engineering/python

EP04 | Python 자료구조 #2 | 딕셔너리와 집합

ygtoken 2025. 3. 19. 22:33
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