python

5편 Python 기초 문법: 딕셔너리와 집합

파이썬 티쳐 2024. 11. 12. 13:41

1. 딕셔너리(Dictionary)

1.1 딕셔너리란 무엇인가

딕셔너리(Dictionary)는 Python의 중요한 데이터 타입 중 하나로, 키(key)와 값(value)의 쌍으로 데이터를 저장하는 자료구조입니다. 딕셔너리는 순서가 없으며, 키를 통해 값을 빠르게 찾을 수 있습니다. 중복된 키는 허용되지 않으며, 변경 가능한(mutable) 자료형입니다.

student = {"name": "Alice", "age": 21, "grade": "A"}

1.2 딕셔너리 생성 및 사용법

딕셔너리는 중괄호 {}를 사용해 생성하며, 각 요소는 키와 값으로 이루어져 있습니다.

person = {"name": "John", "age": 30}
print(person["name"])  # 출력: John

딕셔너리에서 특정 키에 접근하여 값을 가져올 수 있습니다.

1.3 키(key)와 값(value)의 추가, 수정, 삭제

요소 추가: 새로운 키와 값을 추가할 수 있습니다.

person["address"] = "Seoul"
print(person)  # 출력: {'name': 'John', 'age': 30, 'address': 'Seoul'}

요소 수정: 기존 키의 값을 수정할 수 있습니다.

person["age"] = 35
print(person)  # 출력: {'name': 'John', 'age': 35, 'address': 'Seoul'}

요소 삭제: del을 사용하여 특정 키-값 쌍을 삭제할 수 있습니다.

del person["address"]
print(person)  # 출력: {'name': 'John', 'age': 35}

1.4 딕셔너리 순회하기 (for문과 함께 사용)

딕셔너리를 for문과 함께 사용하여 각 키와 값을 순회할 수 있습니다.

for key, value in person.items():
    print(f"키: {key}, 값: {value}")
# 출력:
# 키: name, 값: John
# 키: age, 값: 35

1.5 딕셔너리 관련 메서드들

get(): 키가 존재하지 않을 때 기본값을 반환하도록 할 수 있습니다.

print(person.get("address", "Unknown"))  # 출력: Unknown

keys(): 딕셔너리의 모든 키를 반환합니다.

print(person.keys())  # 출력: dict_keys(['name', 'age'])

values(): 딕셔너리의 모든 값을 반환합니다.

print(person.values())  # 출력: dict_values(['John', 35])

2. 집합(Set)

2.1 집합의 정의와 사용법

집합(Set)은 중복되지 않은 요소들로 이루어진 데이터 타입입니다. 리스트와 달리 요소의 순서는 중요하지 않으며, 중복 요소를 자동으로 제거합니다. 집합은 중괄호 {} 또는 set()을 사용해 생성합니다.

fruits = {"apple", "banana", "cherry"}
print(fruits)  # 출력: {'apple', 'banana', 'cherry'}

2.2 집합의 기본 연산 (교집합, 합집합, 차집합)

교집합: 두 집합 간의 공통 요소를 반환합니다.

set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1 & set2)  # 출력: {2, 3}

합집합: 두 집합을 합쳐 중복되지 않은 모든 요소를 반환합니다.

print(set1 | set2)  # 출력: {1, 2, 3, 4}

차집합: 첫 번째 집합에서 두 번째 집합의 요소를 제외한 결과를 반환합니다.

print(set1 - set2)  # 출력: {1}

2.3 요소 추가와 제거

요소 추가: add() 메서드를 사용하여 집합에 요소를 추가할 수 있습니다.

fruits.add("orange")
print(fruits)  # 출력: {'apple', 'banana', 'cherry', 'orange'}

요소 제거: remove() 또는 discard()를 사용하여 요소를 제거할 수 있습니다. remove()는 요소가 없을 경우 오류를 발생시키지만, discard()는 오류를 발생시키지 않습니다.

fruits.remove("banana")
print(fruits)  # 출력: {'apple', 'cherry', 'orange'}

2.4 집합의 활용 예제 (중복된 값 제거하기)

집합의 특성상 중복된 요소를 자동으로 제거합니다. 이를 활용하여 리스트의 중복 요소를 제거할 수 있습니다.

numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)  # 출력: [1, 2, 3, 4, 5]

3. 딕셔너리와 집합 활용 예제

3.1 딕셔너리를 사용한 학생 성적 관리 프로그램

딕셔너리를 사용해 학생의 이름과 성적을 저장하고, 성적을 조회하는 간단한 프로그램을 작성할 수 있습니다.

grades = {"Alice": 90, "Bob": 85, "Charlie": 95}

# 학생 성적 조회
def get_grade(name):
    return grades.get(name, "학생을 찾을 수 없습니다.")

print(get_grade("Alice"))  # 출력: 90
print(get_grade("David"))  # 출력: 학생을 찾을 수 없습니다.

3.2 집합을 사용한 데이터 중복 제거 예제

집합을 사용하여 중복된 데이터를 제거하고 고유한 값만 남기는 프로그램을 작성할 수 있습니다.

emails = ["a@example.com", "b@example.com", "a@example.com", "c@example.com"]
unique_emails = set(emails)
print(unique_emails)  # 출력: {'a@example.com', 'b@example.com', 'c@example.com'}

집합을 사용하면 리스트에서 중복된 값을 간단히 제거할 수 있습니다.