이번 글에서는 파이썬 자료구조 중 딕셔너리(Dictionary)와 집합(Set)에 대해 정리하겠습니다. 파이썬에서 딕셔너리와 집합이 필요한 이유는 각각의 고유한 기능과 효율성 때문인데요, 다른 언어에서는 복잡했던 동적 크기 조정이 가능한 딕셔너리만의 특징과 연산능력면에서 효율적인 수행이 가능한 집합은 파이썬 자료구조의 특징이며 반드시 필요한 요소입니다.
딕셔너리(Dictionary)
딕셔너리는 키(key)와 값(value) 쌍으로 이루어진 자료구조입니다. 딕셔너리는 순서가 없고, 중복된 키는 허용되지 않습니다.
- 딕셔너리는 중괄호 `{}` 를 사용하여 정의합니다.
# 빈 딕셔너리 생성
empty_dict = {}
# 딕셔너리 생성
student = {'name': 'John', 'age': 20, 'major': 'Computer Science'}
- 딕셔너리의 값(John)에 접근하기 위해서는 키(name)를 사용합니다.
student = {'name': 'John', 'age': 20, 'major': 'Computer Science'}
# 값 접근
print(student['name']) # Output: John
print(student['age']) # Output: 20
# 키 존재 여부 확인
print('name' in student) # Output: True
print('city' in student) # Output: False
- 딕셔너리는 수정, 추가, 삭제가 가능합니다.
student = {'name': 'John', 'age': 20, 'major': 'Computer Science'}
# 값 수정
student['age'] = 21
# 키-값 쌍 추가
student['city'] = 'New York'
# 키-값 쌍 삭제
del student['major']
print(student) # Output: {'name': 'John', 'age': 21, 'city': 'New York'}
딕셔너리의 메소드
딕셔너리에는 여러 메소드가 정의되어 있는데요, 이번에는 그중 가장 많이 활용되는 4가지를 먼저 다뤄보도록 하겠습니다.
- dict.keys(): 딕셔너리의 모든 키를 dict_keys 객체로 반환합니다.
- dict.values(): 딕셔너리의 모든 값을 dict_values 객체로 반환합니다.
- dict.items(): 딕셔너리의 (키, 값) 쌍을 dict_items 객체로 반환합니다.
- dict.get(key[, default]): 딕셔너리에서 지정된 키에 대한 값을 반환합니다. 키가 없으면 None이나 default 값을 반환합니다.
이들 각각의 사용 예를 보면 다음과 같습니다.
- dict.keys()를 통한 반복
my_dict = {'apple': 2, 'banana': 3, 'orange': 1}
for key in my_dict.keys():
print(key, my_dict[key])
이 코드는 딕셔너리의 키를 순회하며 각 키와 그에 해당하는 값을 출력합니다.
- dict.values()를 통한 반복
my_dict = {'apple': 2, 'banana': 3, 'orange': 1}
total = 0
for value in my_dict.values():
total += value
print(f"Total count: {total}")
이 코드는 딕셔너리의 값들을 순회하며 총합을 계산합니다.
- dict.items()를 통한 반복:
my_dict = {'apple': 2, 'banana': 3, 'orange': 1}
for key in my_dict.keys():
print(key, my_dict[key])
이 코드는 딕셔너리의 (키, 값) 쌍을 순회하며 값이 2 초과인 경우 메시지를 출력합니다.
- dict.get()을 통한 조건문:
my_dict = {'apple': 2, 'banana': 3, 'orange': 1}
key = 'grape'
if my_dict.get(key) is None:
print(f"{key} is not in the dictionary.")
else:
print(f"{key} has {my_dict[key]} items.")
이 코드는 dict.get()을 활용하여 키가 딕셔너리에 있는지 확인하고, 그에 따라 다른 메시지를 출력합니다.
이처럼 딕셔너리 메소드를 활용하면 조건문이나 반복문에서 유연하게 딕셔너리 데이터를 처리할 수 있습니다.
집합(Set)
파이썬에서 집합(Set)은 중복된 값을 허용하지 않는 자료구조입니다.
집합은 순서가 없고 인덱싱할 수 없지만, 데이터의 존재 여부를 빠르게 확인할 수 있습니다. 집합은 중괄호 `{}` 또는 `set()` 함수를 사용하여 생성합니다.
- 집합 생성
# 중괄호를 사용하여 집합 생성
fruits = {'apple', 'banana', 'cherry'}
print(fruits) # {'banana', 'apple', 'cherry'}
# set() 함수를 사용하여 집합 생성
numbers = set([1, 2, 3, 3, 2])
print(numbers) # {1, 2, 3}
- 집합의 연산
집합에는 수학에서 배운 집합 연산이 적용됩니다.
a = set([1, 2, 3, 4, 5])
b = set([4, 5, 6, 7, 8])
# 합집합
print(a.union(b)) # {1, 2, 3, 4, 5, 6, 7, 8}
# 교집합
print(a.intersection(b)) # {4, 5}
# 차집합
print(a.difference(b)) # {1, 2, 3}
print(b.difference(a)) # {8, 7, 6}
- 집합 추가, 제거
fruits = {'apple', 'banana', 'cherry'}
# 요소 추가
fruits.add('orange')
print(fruits) # {'orange', 'banana', 'apple', 'cherry'}
# 요소 제거
fruits.remove('banana')
print(fruits) # {'orange', 'apple', 'cherry'}
# 요소가 없으면 에러 대신 False 반환
print(fruits.remove('grape')) # False
집합은 중복된 데이터를 자동으로 제거하고, 수학에서 집합 연산과 유사한 방식으로 조작할 수 있습니다. 또한 in 연산자를 사용하여 데이터의 존재 여부를 빠르게 확인할 수 있습니다. 리스트나 문자열에 비해 메모리 사용량도 적습니다.
집합의 메소드
집합의 유용한 메소드는 다음과 같습니다.
fruits = {'apple', 'banana', 'cherry'}
# add() - 원소 추가
fruits.add('orange')
print(fruits) # Output: {'cherry', 'banana', 'apple', 'orange'}
# remove() - 원소 제거, 원소가 없으면 KeyError 발생
fruits.remove('banana')
print(fruits) # Output: {'cherry', 'apple', 'orange'}
# discard() - 원소 제거, 원소가 없어도 에러 발생하지 않음
fruits.discard('cherry')
print(fruits) # Output: {'apple', 'orange'}
# clear() - 모든 원소 제거
fruits.clear()
print(fruits) # Output: set()
'프로그래밍 언어 > Python' 카테고리의 다른 글
초보도 쉽게 이해하는 파이썬 모듈 활용법, import, 패키지, 실제 사용 예시까지 - Python 기초 #8 (0) | 2024.05.17 |
---|---|
Python 파일 읽기, 쓰기 및 조작 방법, CSV, JSON, Excel - Python 기초 #7 (0) | 2024.05.16 |
파이썬 자료구조 리스트 (List), 튜플 (Tuple) 사용하기 - Python 기초 #5 (0) | 2024.05.13 |
파이썬 기본 문법, 변수, 조건문, 함수의 이해 - Python 기초 #4 (0) | 2024.05.11 |
첫 번째 파이썬 프로그램 작성하기 Hello, Python! - Python 기초 #3 (0) | 2024.05.10 |