Programming/Python

[Python] 파이썬에서 사용되는 자료 구조(딕셔너리/사전)

MAKER' 2024. 4. 23. 17:02

이번 시간에는 파이썬에서 사용되는 자료 구조 형태에 대해 알아보도록 하겠습니다.

우선 자료 구조에 대해 간략하게 설명하면 여러 데이터를 효과적으로 다룰 수 있는 구조를 의미하며, 데이터가 여러 개일 경우에는 자료 구조를 사용하여 데이터를 관리하는 것이 좋습니다.

한마디로 자료 구조란 여러 데이터를 담을 수 있는 "장바구니"와 같다고 볼 수 있습니다.

이러한 자료 구조에는 여러 형태가 있는데 그중 파이썬에서 사용되는 자료 구조인 "딕셔너리/사전" 자료 구조에 대해 알아보도록 하겠습니다.

딕셔너리 (Dictionary)

Python 딕셔너리는 데이터를 Key-Value 쌍으로 저장하고 관리하는 자료 구조입니다.

Key를 통해 Value 값을 인덱싱할 수 있으며, 순서가 없고 수정은 가능한 형태입니다.

 

딕셔너리 생성

딕셔너리 형태의 자료 구조는 중괄호 '{ }' 를 사용하여 정의할 수 있으며, 각 항목은 'Key: Value' 형식의 쌍으로 구성됩니다.

# Creating a dictionary
favorite_fruits = {
    "Alice": "Apple",
    "Bob": "Banana",
    "Carol": "Cherry"
}

 

딕셔너리 인덱스

딕셔너리의 경우 순서가 없기 때문에 이전에 리스트와 튜플에서의 인덱싱과 같이 정수를 입력함으로써 인덱싱할 수 없으며, Key를 통해 Value에 접근할 수 있습니다.

또한, 없는 Key를 통해 인덱싱을 수행할 경우 에러가 발생하게 되는데 이때 .get() 함수를 사용하면 Key가 없을 경우 None 값을 리턴해 에러를 발생시키지 않고 정상적으로 인덱싱을 수행할 수 있습니다. 

# Accessing dictionary values
print(favorite_fruits["Alice"])  # Output: Apple
print(favorite_fruits.get("Eve"))  # Output: None

 

딕셔너리 수정

딕셔너리는 튜플과 달리 변경이 가능합니다. 즉, 딕셔너리가 생성된 후 Key-Value 쌍을 추가, 변경 및 제거할 수 있습니다.

# Modifying a dictionary
favorite_fruits["Bob"] = "Blueberry" # 'Bob': 'Blueberry' 로 수정
favorite_fruits["Dave"] = "Durian" # favorite_fruits 딕셔너리에 'Dave': 'Durian' 을 추가
del favorite_fruits["Carol"] # 'Carol' Key-Value 쌍을 삭제

 

딕셔너리에서 사용되는 다양한 메소드

  • 모든 키를 가져오는 메소드 : '.keys()'
  • 모든 값을 가져오는 메소드 : '.values()'
  • 모든 쌍을 가져오는 메소드 : '.items()'
  • 두 개의 사전을 병합하는 메소드 : '.update()'
# Using dictionary methods
print(favorite_fruits.keys())   # Output: dict_keys(['Alice', 'Bob', 'Dave'])
print(favorite_fruits.values()) # Output: dict_values(['Apple', 'Blueberry', 'Durian'])

딕셔너리를 사용하여 사용자 설정을 관리하는 예시

# 사용자 설정 관리
user_settings = {
    "theme": "dark",           # 테마
    "notifications": "enabled", # 알림
    "language": "English"      # 언어
}

# 설정 업데이트
user_settings.update({"language": "Spanish", "privacy": "high"}) # 언어를 스페인어로 업데이트하고 프라이버시를 높은 수준으로 설정
print(user_settings)  # 설정 출력

# 출력 : {'theme': 'dark', 'notifications': 'enabled', 'language': 'Spanish', 'privacy': 'high'}