딕셔너리는 파이썬에서 가장 강력하고 유용한 데이터 구조 중 하나로, 키와 값의 쌍을 저장하는 데 사용된다. 딕셔너리는 키-값 쌍으로 구성된 데이터를 효율적으로 관리하고, 키를 사용하여 값을 빠르게 검색할 수 있는 해시 테이블 기반의 자료구조다. 딕셔너리는 중괄호 {}로 정의되며, 각 키-값 쌍은 콜론 :으로 구분되고, 각 쌍은 쉼표 ,로 구분된다.
1. 딕셔너리 정의 및 기본 사용법
# 빈 딕셔너리
empty_dict = {}
# 초기값이 있는 딕셔너리
person = {
"name": "Alice",
"age": 25,
"city": "New York"
}
# dict() 생성자를 사용한 딕셔너리 생성
person2 = dict(name="Bob", age=30, city="San Francisco")
print(person) # 출력: {'name': 'Alice', 'age': 25, 'city': 'New York'}
print(person2) # 출력: {'name': 'Bob', 'age': 30, 'city': 'San Francisco'}
2. 딕셔너리 요소 접근 및 수정
키를 사용하여 딕셔너리의 값을 접근할 수 있다.
print(person["name"]) # 출력: Alice
print(person["age"]) # 출력: 25
print(person["city"]) # 출력: New York
키를 사용하여 값을 수정할 수도 있다.
person["age"] = 26
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York'}
3. 딕셔너리 요소 추가 및 삭제
새로운 키-값 쌍을 추가할 수 있다.
person["email"] = "alice@example.com"
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York', 'email': 'alice@example.com'}
키를 사용하여 요소를 삭제할수도 있다.
# del 키워드를 사용한 삭제
del person["email"]
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York'}
# pop() 메서드를 사용한 삭제
age = person.pop("age")
print(age) # 출력: 26
print(person) # 출력: {'name': 'Alice', 'city': 'New York'}
# popitem() 메서드를 사용한 마지막 요소 삭제 (파이썬 3.7+)
last_item = person.popitem()
print(last_item) # 출력: ('city', 'New York')
print(person) # 출력: {'name': 'Alice'}
clear 함수를 통해 모든 요소를 삭제하는 것도 가능하다.
person.clear()
print(person) # 출력: {}
4. 딕셔너리 메서드
keys(): 딕셔너리의 모든 키를 반환한다.
values(): 딕셔너리의 모든 값을 반환한다.
items(): 딕셔너리의 모든 키-값 쌍을 반환한다.
person = {"name": "Alice", "age": 26, "city": "New York"}
print(person.keys()) # 출력: dict_keys(['name', 'age', 'city'])
print(person.values()) # 출력: dict_values(['Alice', 26, 'New York'])
print(person.items()) # 출력: dict_items([('name', 'Alice'), ('age', 26), ('city', 'New York')])
get(): 키를 사용하여 값을 반환하며, 키가 존재하지 않으면 기본값을 반환한다.
name = person.get("name")
print(name) # 출력: Alice
email = person.get("email", "Not Available")
print(email) # 출력: Not Available
update(): 다른 딕셔너리의 키-값 쌍을 추가하여 딕셔너리를 업데이트한다.
additional_info = {"email": "alice@example.com", "phone": "123-456-7890"}
person.update(additional_info)
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York', 'email': 'alice@example.com', 'phone': '123-456-7890'}
5. 딕셔너리 순회
딕셔너리의 키, 값, 키-값 쌍을 순회할 수 있다.
# 키를 순회
for key in person.keys():
print(key)
# 값을 순회
for value in person.values():
print(value)
# 키-값 쌍을 순회
for key, value in person.items():
print(f"{key}: {value}")
6. 딕셔너리 컴프리헨션 (Dictionary Comprehension)
딕셔너리 컴프리헨션을 사용하여 간결하게 딕셔너리를 생성할 수 있다.
squares = {x: x**2 for x in range(6)}
print(squares) # 출력: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
7. 딕셔너리와 관련된 기타 함수
len(): 딕셔너리의 키-값 쌍의 수를 반환한다.
sorted(): 딕셔너리의 키를 정렬된 리스트로 반환한다.
print(len(person)) # 출력: 5
print(sorted(person)) # 출력: ['age', 'city', 'email', 'name', 'phone']