반응형
딕셔너리는 파이썬에서 자주 사용되는 데이터 구조 중 하나로, 키(key)와 값(value) 쌍으로 데이터를 저장하는 방식입니다. 다른 언어에서 해시맵(hashmap), 연관 배열(associative array), 맵(map) 등으로 불리기도 합니다.
딕셔너리의 기본 개념
- 딕셔너리는 중괄호 {}를 사용하여 생성됩니다.
- 각 항목은 키(key)와 값(value)으로 이루어져 있으며, 키: 값 형식으로 표현됩니다.
- 키는 고유해야 하며, 딕셔너리 내에서 중복될 수 없습니다. 값은 중복될 수 있지만, 키는 고유성을 유지해야 합니다.
- 딕셔너리의 키는 변할 수 없는(immutable) 데이터 타입이어야 합니다. 예를 들어, 숫자, 문자열, 튜플 등은 키로 사용할 수 있지만, 리스트나 딕셔너리는 키로 사용할 수 없습니다.
딕셔너리의 예
# 빈 딕셔너리 생성
my_dict = {}
# 키-값 쌍 추가
my_dict['name'] = 'John'
my_dict['age'] = 25
my_dict['city'] = 'New York'
print(my_dict)
위의 코드는 my_dict라는 딕셔너리에 'name', 'age', 'city'라는 키와 각각의 값을 추가합니다. 출력 결과는 다음과 같습니다:
{'name': 'John', 'age': 25, 'city': 'New York'}
딕셔너리의 주요 특징
- 빠른 데이터 검색: 딕셔너리는 해시 테이블(hash table)을 기반으로 동작하기 때문에, 키를 사용한 데이터 검색이 매우 빠릅니다. 리스트와 달리, 인덱스를 사용하지 않고 키를 통해 직접 접근할 수 있습니다.
- 순서가 있음 (파이썬 3.7 이상): 파이썬 3.7부터 딕셔너리는 삽입된 순서를 유지합니다. 즉, 항목이 추가된 순서대로 저장됩니다.
- 변경 가능: 딕셔너리는 변경 가능한(mutable) 데이터 구조입니다. 즉, 생성된 후에도 값을 추가하거나 수정, 삭제할 수 있습니다.
- 키의 고유성: 딕셔너리의 키는 고유해야 하며, 동일한 키를 다시 추가하려고 하면 기존 값이 새로운 값으로 덮어쓰여집니다.
딕셔너리 사용 방법
- 값 접근: 키를 사용하여 값에 접근할 수 있습니다.
- print(my_dict['name']) # 출력: 'John'
- 값 수정: 특정 키의 값을 수정할 수 있습니다.
- my_dict['age'] = 26 print(my_dict['age']) # 출력: 26
- 키-값 쌍 삭제: del 키워드를 사용하여 특정 키-값 쌍을 삭제할 수 있습니다.
- del my_dict['city'] print(my_dict) # 출력: {'name': 'John', 'age': 26}
- 키 존재 여부 확인: 특정 키가 딕셔너리에 존재하는지 확인할 수 있습니다.
- if 'name' in my_dict: print("Name exists!")
딕셔너리 메서드들
딕셔너리는 여러 유용한 메서드를 제공합니다. 몇 가지 예시는 다음과 같습니다:
- keys(): 딕셔너리의 모든 키를 반환합니다.
- print(my_dict.keys()) # 출력: dict_keys(['name', 'age'])
- values(): 딕셔너리의 모든 값을 반환합니다.
- print(my_dict.values()) # 출력: dict_values(['John', 26])
- items(): 딕셔너리의 키-값 쌍을 튜플로 반환합니다.
- print(my_dict.items()) # 출력: dict_items([('name', 'John'), ('age', 26)])
- get(): 키를 사용해 값을 가져오지만, 키가 존재하지 않을 경우 기본값을 설정할 수 있습니다.
- print(my_dict.get('name', 'Unknown')) # 출력: 'John' print(my_dict.get('city', 'Unknown')) # 출력: 'Unknown'
- update(): 다른 딕셔너리로 기존 딕셔너리를 업데이트할 수 있습니다.
- my_dict.update({'city': 'Boston', 'country': 'USA'}) print(my_dict) # 출력: {'name': 'John', 'age': 26, 'city': 'Boston', 'country': 'USA'}
딕셔너리와 리스트의 차이점
- 인덱스 vs 키: 리스트는 정수 인덱스를 사용해 요소에 접근하는 반면, 딕셔너리는 키를 사용해 값을 저장하고 접근합니다.
- 속도 차이: 리스트는 요소를 검색할 때 처음부터 끝까지 순차적으로 검색해야 할 수 있지만, 딕셔너리는 해시 테이블을 이용해 키를 통해 매우 빠르게 접근할 수 있습니다.
딕셔너리의 활용
딕셔너리는 다양한 상황에서 유용하게 사용될 수 있습니다. 예를 들어, 데이터를 구조화해서 관리해야 할 때, 특정 키에 대응하는 값을 저장할 때 유용합니다. 특히 JSON 데이터 형식과 유사하여, 웹 프로그래밍이나 API 데이터를 처리할 때도 자주 사용됩니다.
예시: 학생 성적 관리 시스템
students_scores = {
'Alice': 85,
'Bob': 92,
'Charlie': 78,
}
# 특정 학생의 성적 접근
print(students_scores['Bob']) # 출력: 92
# 학생 성적 추가
students_scores['David'] = 90
# 학생 성적 수정
students_scores['Alice'] = 88
# 학생 성적 삭제
del students_scores['Charlie']
이처럼 딕셔너리는 다양한 형태의 데이터를 체계적으로 관리할 수 있는 강력한 도구입니다. 데이터가 많아질수록 딕셔너리의 빠른 검색 성능과 유연성은 더욱 유용하게 작용합니다.
반응형