Python에는 데이터를 관리하고 처리하기 위한 다양한 내장 자료구조가 존재합니다. 그중에서 딕셔너리(Dictionary)와 집합(Set)은 각각 키-값 형태의 매핑 구조와 중복 없는 데이터 집합을 표현하기에 적합합니다. 두 자료구조는 기본적인 기능에서부터 고급 활용까지 광범위하게 사용되므로 이 글에서는 이들의 개념, 차이점, 사용 방법, 활용 사례를 깊이 있게 살펴보겠습니다.
딕셔너리(Dictionary)의 이해
딕셔너리(Dictionary)는 키(key)와 값(value)의 쌍으로 이루어진 데이터 구조입니다. 각 키는 고유하며, 이를 통해 값을 참조할 수 있습니다. 이는 JSON과 같은 데이터 구조를 다룰 때도 유용합니다.
딕셔너리의 생성 및 기본 사용법
딕셔너리는 중괄호 {}를 사용하여 생성합니다. 키는 불변형(예: 문자열, 숫자 등)이어야 하며, 값은 모든 형태의 데이터가 가능합니다.
# 딕셔너리 생성
user_profile = {
"name": "홍길동",
"age": 30,
"hobbies": ["등산", "독서", "게임"]
}
# 값 참조
print(user_profile["name"]) # 홍길동
# 값 추가 및 수정
user_profile["age"] = 31
user_profile["location"] = "서울"
print(user_profile)
딕셔너리의 주요 메서드
keys(): 모든 키 반환values(): 모든 값 반환items():(키, 값)쌍 반환get(): 키로 값을 가져오되, 없는 경우 기본값 반환pop(): 특정 키-값 제거 후 반환
# 주요 메서드 예제
print(user_profile.keys()) # dict_keys(['name', 'age', 'hobbies', 'location'])
print(user_profile.values()) # dict_values(['홍길동', 31, ['등산', '독서', '게임'], '서울'])
print(user_profile.get("age", "없음")) # 31
print(user_profile.pop("location", "없음")) # 서울
집합(Set)의 이해
집합(Set)은 중복되지 않는 요소의 모음으로, 수학의 집합 개념을 구현합니다. 데이터의 존재 여부를 확인하거나 중복을 제거하는 데 유용합니다.
집합의 생성 및 기본 사용법
set() 함수를 사용하거나 중괄호 {}로 생성할 수 있습니다. 빈 집합을 생성할 때는 반드시 set()을 사용해야 합니다.
# 집합 생성
unique_numbers = {1, 2, 3, 4, 5}
empty_set = set()
# 요소 추가
unique_numbers.add(6)
# 요소 제거
unique_numbers.discard(3)
print(unique_numbers) # {1, 2, 4, 5, 6}
집합의 주요 연산
- 합집합 (
union) - 교집합 (
intersection) - 차집합 (
difference) - 대칭차집합 (
symmetric_difference)
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# 합집합
print(set_a | set_b) # {1, 2, 3, 4, 5}
# 교집합
print(set_a & set_b) # {3}
# 차집합
print(set_a - set_b) # {1, 2}
# 대칭차집합
print(set_a ^ set_b) # {1, 2, 4, 5}
딕셔너리와 집합의 차이점
| 구분 | 딕셔너리(Dictionary) | 집합(Set) |
|---|---|---|
| 데이터 구조 | 키-값 쌍 | 고유한 값 |
| 중복 허용 여부 | 키는 중복 불가, 값은 중복 가능 | 중복 불가 |
| 순서 유지 여부 | Python 3.7 이상에서 순서 유지 | 순서 없음 |
| 주요 기능 | 매핑(mapping), 검색, 수정, 삭제 | 중복 제거, 집합 연산 |
활용 사례
딕셔너리로 사용자 관리 시스템 구현
딕셔너리는 키를 사용자 ID로 설정하여 유용하게 관리할 수 있습니다.
# 사용자 관리 시스템
users = {}
# 사용자 추가
users["user1"] = {"name": "김영희", "age": 25}
users["user2"] = {"name": "이철수", "age": 28}
# 특정 사용자 정보 확인
print(users.get("user1")) # {'name': '김영희', 'age': 25}
집합으로 중복 제거 및 빠른 검색
집합은 리스트에 비해 데이터 검색 속도가 빠릅니다.
# 중복 제거
raw_data = [1, 2, 3, 4, 4, 5, 5, 6]
unique_data = set(raw_data)
print(unique_data) # {1, 2, 3, 4, 5, 6}
# 빠른 검색
if 3 in unique_data:
print("3은 데이터에 존재합니다.")
결론
딕셔너리와 집합은 각각 다른 목적과 사용 사례를 가지고 있습니다. 딕셔너리는 키-값 매핑을 통해 구조화된 데이터를 다룰 때 유용하며, 집합은 중복을 제거하거나 데이터 간의 집합 연산을 수행할 때 적합합니다. 두 자료구조의 특성과 기능을 잘 활용하면 데이터 처리가 훨씬 간결하고 효율적으로 이루어질 것입니다.
다른 글
Python 리스트(list)와 튜플(tuple)
파이썬에서 리스트(list)와 튜플(tuple)은 가장 기본적이고 자주 사용되는 자료구조입니다. 이 둘은 데이터의 저장 및 처리를 위한 컨테이너 역할을 하지만, 동작 방식과 용도에서 차이가 있습니다
gallery-a.tistory.com

'Language > Python' 카테고리의 다른 글
| Python 파일 입출력 (파일 열기, 읽기와 쓰기) (0) | 2023.10.24 |
|---|---|
| Python의 리스트 컴프리헨션(List Comprehension) (0) | 2023.10.23 |
| Python 리스트(list)와 튜플(tuple) (0) | 2023.10.22 |
| Python 조건문과 반복문 (0) | 2023.10.21 |
| Python 기본 문법 (데이터 타입, 연산자, 입력과 출력, 주석) (1) | 2023.10.21 |