1. 딕셔너리와 집합이란 무엇인가요?
안녕하세요! 오늘은 파이썬에서 데이터를 효율적으로 관리하고 처리할 수 있는 두 가지 강력한 데이터 구조인 딕셔너리(Dictionary) 와 집합(Set)에 대해 알아보겠습니다. 딕셔너리는 데이터를 키-값(Key-Value) 쌍으로 저장하며, 집합은 중복을 허용하지 않는 고유한 데이터의 집합입니다. 이 글에서는 딕셔너리와 집합의 개념, 활용 방법, 그리고 학생 성적 관리 프로그램을 만들어보는 실습을 다룰 예정입니다.
2. 딕셔너리(Dictionary)
딕셔너리의 특징
- 데이터를 **키(Key)**와 값(Value) 쌍으로 저장합니다.
- 키는 고유해야 하며, 값은 중복될 수 있습니다.
- 데이터를 빠르게 검색, 추가, 수정할 수 있습니다.
딕셔너리 선언
# 딕셔너리 선언 예제
student = {
"name": "Alice",
"age": 20,
"grade": "A"
}
딕셔너리 주요 메서드
- keys(): 모든 키를 반환합니다.
- print(student.keys()) # dict_keys(['name', 'age', 'grade'])
- values(): 모든 값을 반환합니다.
- print(student.values()) # dict_values(['Alice', 20, 'A'])
- items(): 키-값 쌍을 튜플 형태로 반환합니다.
- print(student.items()) # dict_items([('name', 'Alice'), ('age', 20), ('grade', 'A')])
- get(): 특정 키의 값을 반환하며, 키가 없으면 기본값을 반환합니다.
- print(student.get("name")) # 'Alice' print(student.get("school", "Unknown")) # 'Unknown'
- update(): 딕셔너리를 병합하거나 값을 업데이트합니다.
- student.update({"age": 21}) print(student) # {'name': 'Alice', 'age': 21, 'grade': 'A'}
3. 집합(Set)
집합의 특징
- 중복된 값을 허용하지 않는 데이터 구조입니다.
- 데이터의 유일성을 보장하며, 집합 간의 수학적 연산(합집합, 교집합 등)을 지원합니다.
- 중괄호({ })를 사용해 선언합니다.
집합 선언
# 집합 선언 예제
numbers = {1, 2, 3, 4, 5}
집합 주요 연산
- add(): 집합에 새로운 요소를 추가합니다.
- numbers.add(6) print(numbers) # {1, 2, 3, 4, 5, 6}
- remove(): 특정 요소를 제거합니다. 요소가 없으면 오류가 발생합니다.
- numbers.remove(3) print(numbers) # {1, 2, 4, 5, 6}
- union(): 두 집합의 합집합을 반환합니다.
- evens = {2, 4, 6} print(numbers.union(evens)) # {1, 2, 4, 5, 6}
- intersection(): 두 집합의 교집합을 반환합니다.
- odds = {1, 3, 5} print(numbers.intersection(odds)) # {1, 5}
- difference(): 차집합을 반환합니다.
- print(numbers.difference(odds)) # {2, 4, 6}
4. 실습: 학생 성적 관리 프로그램
문제 설명
학생들의 이름과 성적을 딕셔너리에 저장한 후, 다양한 작업(추가, 삭제, 검색 등)을 수행하는 프로그램을 작성합니다.
코드
# 학생 성적 딕셔너리 선언
students = {
"Alice": 85,
"Bob": 92,
"Charlie": 78
}
# 학생 성적 추가
students["David"] = 88
print("학생 추가:", students)
# 특정 학생 성적 검색
name = "Bob"
print(f"{name}의 성적: {students.get(name, '학생이 없습니다.')}")
# 특정 학생 삭제
del students["Charlie"]
print("학생 삭제:", students)
# 모든 학생 평균 성적 계산
average = sum(students.values()) / len(students)
print(f"평균 성적: {average:.2f}")
실행 예시
학생 추가: {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
Bob의 성적: 92
학생 삭제: {'Alice': 85, 'Bob': 92, 'David': 88}
평균 성적: 88.33
5. 실습 과제
- 학생 성적 상위/하위 점수 찾기
- 딕셔너리를 사용해 가장 높은 점수와 가장 낮은 점수를 가진 학생을 출력하세요.
highest = max(students, key=students.get) lowest = min(students, key=students.get) print(f"최고 점수: {highest} ({students[highest]})") print(f"최저 점수: {lowest} ({students[lowest]})")
- 집합을 사용한 중복 제거
- 사용자 입력값에서 중복된 숫자를 제거하고 정렬된 리스트를 출력하세요.
numbers = input("숫자를 입력하세요 (예: 1,2,2,3,4): ") unique_numbers = sorted(set(map(int, numbers.split(",")))) print(f"중복 제거 결과: {unique_numbers}")
- 학생 이름 검색 기능 추가
- 사용자로부터 학생 이름을 입력받아 성적을 출력하는 프로그램을 작성하세요.
name = input("학생 이름을 입력하세요: ") print(f"{name}의 성적: {students.get(name, '학생이 없습니다.')}")
딕셔너리와 집합은 파이썬에서 데이터를 효율적으로 관리하기 위한 필수적인 도구입니다. 이 글을 통해 딕셔너리의 키-값 구조와 집합의 중복 제거 및 연산 방법을 배우셨을 겁니다. 실습과 과제를 통해 배운 내용을 직접 적용해 보세요. 더 궁금한 점이 있거나 의견이 있다면 댓글로 남겨주세요. 여러분의 코딩 여정을 응원합니다!
Python Day 4: 파이썬 리스트와 튜플 - 데이터 관리의 핵심
1. 리스트와 튜플이란?안녕하세요! 오늘은 파이썬에서 데이터를 저장하고 관리하는 데 가장 자주 사용되는 두 가지 데이터 구조인 리스트(List)와 튜플(Tuple)에 대해 알아보겠습니다. 이 글에서는
nerdcodex.tistory.com
Python Day 3: 파이썬 문자열 다루기 - 인덱싱, 슬라이싱, 메서드 활용의 모든 것
1. 문자열이란 무엇인가요?안녕하세요! 오늘은 파이썬 프로그래밍에서 가장 자주 사용되는 데이터 타입 중 하나인 문자열(String)에 대해 알아보겠습니다. 문자열은 문자의 집합으로, 텍스트 데이
nerdcodex.tistory.com
'파이썬(Python)' 카테고리의 다른 글
Python Day 7: 파이썬 반복문 (for) - 효율적인 반복 작업 이해하기 (0) | 2025.01.26 |
---|---|
Python Day 6: 파이썬 조건문 - 로직 설계의 기본 (0) | 2025.01.25 |
Python Day 4: 파이썬 리스트와 튜플 - 데이터 관리의 핵심 (0) | 2025.01.23 |
Python Day 3: 파이썬 문자열 다루기 - 인덱싱, 슬라이싱, 메서드 활용의 모든 것 (0) | 2025.01.22 |
Python Day 2 : 파이썬 변수와 데이터 타입 완벽 가이드 - 초보자를 위한 쉬운 설명과 실습 (0) | 2025.01.21 |