본문 바로가기
  • NerdCodX Blog
파이썬(Python)

Python Day 5: 파이썬 딕셔너리와 집합 - 데이터를 효율적으로 관리하기

by NerdCodeX 2025. 1. 24.

1. 딕셔너리와 집합이란 무엇인가요?

안녕하세요! 오늘은 파이썬에서 데이터를 효율적으로 관리하고 처리할 수 있는 두 가지 강력한 데이터 구조인 딕셔너리(Dictionary) 와 집합(Set)에 대해 알아보겠습니다. 딕셔너리는 데이터를 키-값(Key-Value) 쌍으로 저장하며, 집합은 중복을 허용하지 않는 고유한 데이터의 집합입니다. 이 글에서는 딕셔너리와 집합의 개념, 활용 방법, 그리고 학생 성적 관리 프로그램을 만들어보는 실습을 다룰 예정입니다.

 


2. 딕셔너리(Dictionary)

딕셔너리의 특징

  • 데이터를 **키(Key)**와 값(Value) 쌍으로 저장합니다.
  • 키는 고유해야 하며, 값은 중복될 수 있습니다.
  • 데이터를 빠르게 검색, 추가, 수정할 수 있습니다.

딕셔너리 선언

# 딕셔너리 선언 예제
student = {
    "name": "Alice",
    "age": 20,
    "grade": "A"
}

 

딕셔너리 주요 메서드

  1. keys(): 모든 키를 반환합니다.
  2. print(student.keys()) # dict_keys(['name', 'age', 'grade'])
  3. values(): 모든 값을 반환합니다.
  4. print(student.values()) # dict_values(['Alice', 20, 'A'])
  5. items(): 키-값 쌍을 튜플 형태로 반환합니다.
  6. print(student.items()) # dict_items([('name', 'Alice'), ('age', 20), ('grade', 'A')])
  7. get(): 특정 키의 값을 반환하며, 키가 없으면 기본값을 반환합니다.
  8. print(student.get("name")) # 'Alice' print(student.get("school", "Unknown")) # 'Unknown'
  9. update(): 딕셔너리를 병합하거나 값을 업데이트합니다.
  10. student.update({"age": 21}) print(student) # {'name': 'Alice', 'age': 21, 'grade': 'A'}

3. 집합(Set)

집합의 특징

  • 중복된 값을 허용하지 않는 데이터 구조입니다.
  • 데이터의 유일성을 보장하며, 집합 간의 수학적 연산(합집합, 교집합 등)을 지원합니다.
  • 중괄호({ })를 사용해 선언합니다.

집합 선언

# 집합 선언 예제
numbers = {1, 2, 3, 4, 5}

 

집합 주요 연산

  1. add(): 집합에 새로운 요소를 추가합니다.
  2. numbers.add(6) print(numbers) # {1, 2, 3, 4, 5, 6}
  3. remove(): 특정 요소를 제거합니다. 요소가 없으면 오류가 발생합니다.
  4. numbers.remove(3) print(numbers) # {1, 2, 4, 5, 6}
  5. union(): 두 집합의 합집합을 반환합니다.
  6. evens = {2, 4, 6} print(numbers.union(evens)) # {1, 2, 4, 5, 6}
  7. intersection(): 두 집합의 교집합을 반환합니다.
  8. odds = {1, 3, 5} print(numbers.intersection(odds)) # {1, 5}
  9. difference(): 차집합을 반환합니다.
  10. 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. 실습 과제

  1. 학생 성적 상위/하위 점수 찾기
    • 딕셔너리를 사용해 가장 높은 점수와 가장 낮은 점수를 가진 학생을 출력하세요.
    highest = max(students, key=students.get)
    lowest = min(students, key=students.get)
    print(f"최고 점수: {highest} ({students[highest]})")
    print(f"최저 점수: {lowest} ({students[lowest]})")
    
  2. 집합을 사용한 중복 제거
    • 사용자 입력값에서 중복된 숫자를 제거하고 정렬된 리스트를 출력하세요.
    numbers = input("숫자를 입력하세요 (예: 1,2,2,3,4): ")
    unique_numbers = sorted(set(map(int, numbers.split(","))))
    print(f"중복 제거 결과: {unique_numbers}")
    
  3. 학생 이름 검색 기능 추가
    • 사용자로부터 학생 이름을 입력받아 성적을 출력하는 프로그램을 작성하세요.
    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