본문 바로가기
카테고리 없음

파이썬 딕셔너리와 세트 - 효율적인 데이터 관리 방법

by 혜택보관소 2024. 11. 15.

파이썬에서 데이터를 효율적으로 관리할 수 있는 자료형으로 딕셔너리(Dictionary)세트(Set)가 있습니다. 딕

셔너리는 키와 값의 쌍으로 데이터를 저장하고, 세트는 중복 없이 유일한 값만을 저장하는 자료형입니다.

이 글에서는 두 자료형의 특징과 활용법을 예제와 함께 설명합니다.

파이썬 딕셔너리 세트

1. 딕셔너리(Dictionary)란?

딕셔너리{} 중괄호로 감싸서 정의하며, 키-값 쌍으로 데이터를 저장합니다. 리스트와 튜플이 순서에 의해 데이터를 관리하는 것과 달리, 딕셔너리는 키를 통해 값을 저장하고 조회할 수 있습니다.

1.1 딕셔너리 생성하기

딕셔너리는 각 키에 해당하는 값을 설정하여 생성할 수 있습니다.

person = {"이름": "홍길동", "나이": 30, "도시": "서울"}

위 예제에서 person 딕셔너리는 이름, 나이, 도시를 키로 가지며, 각 키에 대해 값을 저장하고 있습니다.

1.2 딕셔너리 값 조회하기

딕셔너리에서 값을 조회할 때는 키를 사용하여 접근합니다.

print(person["이름"])  # 홍길동

딕셔너리에 존재하지 않는 키를 조회하면 KeyError가 발생합니다. get() 메서드를 사용하면 키가 없는 경우 None을 반환하게 할 수 있습니다.

print(person.get("직업", "직업 정보 없음"))  # 직업 정보 없음

1.3 딕셔너리 주요 메서드

  • keys(): 모든 키를 리스트로 반환
  • values(): 모든 값을 리스트로 반환
  • items(): 모든 키-값 쌍을 튜플 형태로 반환
  • update(): 딕셔너리에 새로운 키-값 추가 또는 기존 값 수정
  • pop(): 특정 키의 값 제거 및 반환
print(person.keys())      # dict_keys(['이름', '나이', '도시'])
print(person.values())    # dict_values(['홍길동', 30, '서울'])

person.update({"직업": "개발자"})
print(person)  # {'이름': '홍길동', '나이': 30, '도시': '서울', '직업': '개발자'}

2. 세트(Set)란?

세트{} 중괄호를 사용하여 정의하며, 리스트나 튜플과 달리 중복되지 않는 유일한 값만을 저장합니다. 세트는 순서가 없고, 빠른 조회 속도를 자랑하여 고유한 값만 필요할 때 유용합니다.

2.1 세트 생성하기

fruits = {"사과", "바나나", "체리"}

위 코드에서는 세트 fruits가 정의되었으며, 사과, 바나나, 체리라는 고유한 값만을 포함합니다.

2.2 세트의 주요 특징

  • 중복을 허용하지 않음
  • 순서가 없어 인덱싱이 불가능
  • 변경 가능한 자료형

2.3 세트의 주요 메서드

  • add(): 세트에 요소 추가
  • remove(): 세트에서 요소 제거 (없는 요소를 제거하려면 KeyError 발생)
  • discard(): 세트에서 요소 제거 (없는 요소를 제거해도 오류 발생 안 함)
  • clear(): 세트의 모든 요소 제거
fruits.add("포도")
print(fruits)  # {'사과', '바나나', '체리', '포도'}

fruits.remove("바나나")
print(fruits)  # {'사과', '체리', '포도'}

3. 딕셔너리와 세트의 활용

예제 1: 학생 성적 관리 (딕셔너리 활용)

아래 예제에서는 학생들의 이름을 키로, 성적을 값으로 저장하여 성적 관리 시스템을 구현합니다.

grades = {"홍길동": 85, "이순신": 92, "장보고": 78}
# 학생 추가
grades["신사임당"] = 95
print(grades)  # {'홍길동': 85, '이순신': 92, '장보고': 78, '신사임당': 95}

# 특정 학생 성적 조회
print(grades.get("이순신"))  # 92

딕셔너리는 학생 이름을 키로 설정해 성적을 빠르게 조회하고 관리할 수 있게 해 줍니다.

예제 2: 중복 제거 (세트 활용)

리스트에서 중복된 데이터를 제거할 때 세트를 사용할 수 있습니다.

numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = set(numbers)
print(unique_numbers)  # {1, 2, 3, 4, 5}

세트를 통해 리스트의 중복된 값이 제거되고, 고유한 값만 남게 됩니다.

4. 세트 연산

세트는 집합과 같은 연산을 지원하여 합집합, 교집합, 차집합 등을 쉽게 구할 수 있습니다.

  • union() 또는 |: 합집합
  • intersection() 또는 &: 교집합
  • difference() 또는 -: 차집합

예제 3: 세트 연산

set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}

print(set_a | set_b)  # {1, 2, 3, 4, 5, 6} (합집합)
print(set_a & set_b)  # {3, 4} (교집합)
print(set_a - set_b)  # {1, 2} (차집합)

세트 연산을 통해 두 세트 간의 관계를 쉽게 파악할 수 있습니다.

마무리

이번 글에서는 파이썬의 딕셔너리와 세트의 사용법과 활용 예제를 살펴보았습니다.

딕셔너리는 키-값 구조로 데이터를 빠르게 관리할 수 있고, 세트는 중복 없는 고유한 값을 저장하고 관리하는 데 유용합니다.

두 자료형의 특성을 잘 이해하여 적절한 상황에 맞게 활용해 보세요.