파이썬은 다양한 자료형과 데이터 구조를 제공하는 강력한 프로그래밍 언어입니다. 그중에서도 딕셔너리(Dictionary)는 매우 중요한 자료형 중 하나입니다. 이 글에서는 파이썬 딕셔너리에 대해 기초부터 고급까지 알아보고, 이를 효과적으로 사용하는 방법을 소개하겠습니다.
1. 파이썬 딕셔너리란?
파이썬 딕셔너리는 키(key)와 값(value)의 쌍으로 이루어진 자료 구조입니다. 리스트나 튜플과는 다르게, 딕셔너리는 인덱스가 아닌 키를 사용하여 데이터를 저장하고 조회합니다. 딕셔너리는 중괄호 {}
로 정의되며, 콜론 :
을 사용하여 키와 값을 구분합니다.
# 딕셔너리 정의 예시
student = {
"name": "John",
"age": 25,
"courses": ["Math", "Science"]
}
2. 딕셔너리의 주요 기능
딕셔너리는 데이터 저장, 조회, 수정, 삭제 등 다양한 기능을 제공합니다.
(1) 데이터 저장
딕셔너리에 데이터를 저장할 때는 키와 값을 지정합니다. 키는 문자열, 숫자, 튜플과 같이 변경 불가능한(immutable) 데이터 타입을 사용할 수 있습니다.
# 딕셔너리에 새로운 키-값 쌍 추가
student["grade"] = "A"
(2) 데이터 조회
키를 사용하여 딕셔너리의 값을 조회할 수 있습니다. 키가 존재하지 않는 경우, get
메서드를 사용하면 기본값을 반환하도록 설정할 수 있습니다.
# 키를 사용하여 값 조회
print(student["name"]) # 출력: John
# get 메서드를 사용한 값 조회
print(student.get("grade", "Not Found")) # 출력: A
(3) 데이터 수정
기존 키의 값을 수정하는 것은 새로운 값을 할당하는 것과 동일합니다.
# 키의 값 수정
student["age"] = 26
(4) 데이터 삭제
del
키워드나 pop
메서드를 사용하여 딕셔너리에서 키-값 쌍을 삭제할 수 있습니다.
# del 키워드를 사용한 삭제
del student["courses"]
# pop 메서드를 사용한 삭제
grade = student.pop("grade")
print(grade) # 출력: A
3. 딕셔너리 메서드
딕셔너리는 다양한 메서드를 제공하여 데이터를 효율적으로 관리할 수 있습니다.
(1) keys() 메서드
keys()
메서드는 딕셔너리의 모든 키를 반환합니다.
print(student.keys()) # 출력: dict_keys(['name', 'age'])
(2) values() 메서드
values()
메서드는 딕셔너리의 모든 값을 반환합니다.
print(student.values()) # 출력: dict_values(['John', 26])
(3) items() 메서드
items()
메서드는 딕셔너리의 모든 키-값 쌍을 반환합니다.
print(student.items()) # 출력: dict_items([('name', 'John'), ('age', 26)])
(4) update() 메서드
update()
메서드는 다른 딕셔너리나 키-값 쌍을 추가합니다.
student.update({"grade": "A", "courses": ["Math", "Science"]})
4. 딕셔너리 컴프리헨션
딕셔너리 컴프리헨션(Dictionary Comprehension)은 리스트 컴프리헨션과 유사하게, 짧은 코드로 딕셔너리를 생성할 수 있는 강력한 기능입니다.
# 1부터 5까지의 숫자를 키로, 그 제곱을 값으로 가지는 딕셔너리 생성
squares = {x: x**2 for x in range(1, 6)}
print(squares) # 출력: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
5. 고급 기능
(1) 중첩 딕셔너리
딕셔너리 안에 또 다른 딕셔너리를 포함시킬 수 있습니다. 이를 통해 더 복잡한 데이터 구조를 만들 수 있습니다.
students = {
"student1": {"name": "John", "age": 25},
"student2": {"name": "Jane", "age": 22}
}
(2) 디폴트딕트(DefaultDict)
collections
모듈의 defaultdict
를 사용하면, 키가 존재하지 않을 때 자동으로 기본값을 생성하는 딕셔너리를 만들 수 있습니다.
from collections import defaultdict
# 기본값을 리스트로 설정
dd = defaultdict(list)
dd["names"].append("John")
print(dd) # 출력: defaultdict(<class 'list'>, {'names': ['John']})
(3) 정렬된 딕셔너리
파이썬 3.7부터 딕셔너리는 기본적으로 입력 순서를 유지하지만, collections
모듈의 OrderedDict
를 사용하면 입력 순서 외에도 특정 기준에 따라 딕셔너리를 정렬할 수 있습니다.
from collections import OrderedDict
# 키를 기준으로 정렬된 딕셔너리
od = OrderedDict(sorted(student.items()))
print(od) # 출력: OrderedDict([('age', 26), ('grade', 'A'), ('name', 'John')])
6. 결론
파이썬 딕셔너리는 매우 유연하고 강력한 데이터 구조로, 다양한 상황에서 효율적으로 데이터를 관리할 수 있습니다. 기초적인 사용법부터 고급 기능까지 익히면, 보다 복잡한 프로그램에서도 쉽게 활용할 수 있습니다. 파이썬 딕셔너리를 이해하고, 이를 잘 활용하여 더 나은 프로그래밍 경험을 누리시기 바랍니다.