파이썬에서 데이터를 효율적으로 관리할 수 있는 자료형으로 딕셔너리(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} (차집합)
세트 연산을 통해 두 세트 간의 관계를 쉽게 파악할 수 있습니다.
마무리
이번 글에서는 파이썬의 딕셔너리와 세트의 사용법과 활용 예제를 살펴보았습니다.
딕셔너리는 키-값 구조로 데이터를 빠르게 관리할 수 있고, 세트는 중복 없는 고유한 값을 저장하고 관리하는 데 유용합니다.
두 자료형의 특성을 잘 이해하여 적절한 상황에 맞게 활용해 보세요.