딕셔너리(Dictionary)는 파이썬에서 가장 중요한 자료구조 중 하나로, 키(key)와 값(value)의 쌍으로 이루어진 데이터를 저장하는 가변적인 자료형이다. 딕셔너리는 순서가 없으며(Python 3.7 이후로는 삽입 순서를 유지하지만, 본질적으로는 순서가 중요하지 않음), 키를 이용해 값을 빠르게 조회할 수 있다.
{Key: Value, ...}
)딕셔너리는 중괄호 {}
를 사용해 생성하며, 키와 값을 콜론(:
)으로 연결하고, 각각의 키-값 쌍은 쉼표(,
)로 구분한다.
# 빈 딕셔너리 생성
my_dict = {}
# 키-값 쌍으로 딕셔너리 생성
person = {"name": "John", "age": 30, "city": "New York"}
print(person) # {'name': 'John', 'age': 30, 'city': 'New York'}
딕셔너리에서 특정 값을 가져오려면, 키를 사용하여 접근할 수 있다.
person = {"name": "John", "age": 30, "city": "New York"}
# 키를 사용한 값 접근
print(person["name"]) # John
print(person["age"]) # 30
새로운 키-값 쌍을 추가하거나, 기존 키의 값을 업데이트할 수 있다.
# 값 추가
person["job"] = "Engineer"
print(person) # {'name': 'John', 'age': 30, 'city': 'New York', 'job': 'Engineer'}
# 값 업데이트
person["age"] = 31
print(person) # {'name': 'John', 'age': 31, 'city': 'New York', 'job': 'Engineer'}
del
/ pop()
딕셔너리에서 특정 키-값 쌍을 삭제하려면 del
또는 pop()
을 사용할 수 있다.
person = {'name': 'John', 'age': 31, 'city': 'New York', 'job': 'Engineer'}
# del을 사용한 값 삭제
del person["city"]
print(person) # {'name': 'John', 'age': 31, 'job': 'Engineer'}
# pop()을 사용한 값 삭제 (삭제된 값 반환)
age = person.pop("age")
print(person) # {'name': 'John', 'job': 'Engineer'}
print(age) # 31 (pop()은 삭제된 값을 반환함)
keys()
/ values()
딕셔너리에서 모든 키나 모든 값을 가져오려면 각각 keys()
또는 values()
메소드를 사용한다.
person = {"name": "John", "age": 30, "city": "New York"}
# 모든 키 가져오기
print(person.keys()) # dict_keys(['name', 'age', 'city'])
# 모든 값 가져오기
print(person.values()) # dict_values(['John', 30, 'New York'])
items()
딕셔너리의 모든 키와 값을 한 번에 가져오려면 items()
메소드를 사용한다. 이 메소드는 각 키-값 쌍을 튜플 형태로 반환한다.
person = {"name": "John", "age": 30, "city": "New York"}
# 모든 키-값 쌍 가져오기
print(person.items()) # dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])
딕셔너리는 for
문을 사용해 키, 값, 또는 키-값 쌍을 반복적으로 처리할 수 있다.
person = {"name": "John", "age": 30, "city": "New York"}
# 딕셔너리 키만 반복
for key in person:
print(key) # name, age, city
# 딕셔너리 값만 반복
for value in person.values():
print(value) # John, 30, New York
# 딕셔너리의 키-값 쌍 반복
for key, value in person.items():
print(f"{key}: {value}")
# name: John
# age: 30
# city: New York
in
연산자in 연산자
를 사용해 딕셔너리에 특정 키가 있는지 확인할 수 있다.
person = {"name": "John", "age": 30, "city": "New York"}
# 키 존재 여부 확인
print("name" in person) # True
print("job" in person) # False
clear()
: 딕셔너리의 모든 요소를 삭제person.clear()
print(person) # {}
copy()
: 딕셔너리를 복사person_copy = person.copy()
print(person_copy) # {'name': 'John', 'age': 30, 'city': 'New York'}
get()
: 키를 사용하여 값을 가져오며, 키가 없을 경우 기본값을 반환print(person.get("name")) # John
print(person.get("job")) # None
print(person.get("job", "Unknown")) # Unknown (키 'job'이 없으므로 기본값 반환)
None
키워드 : null
값 또는 전혀 값이 없음을 의미함.None
은 False
또는 빈 문자열과 같지 않고, 자체 데이터 유형(NoneType)이며 None
이 None
이 될 수 있음.update()
: 다른 딕셔너리의 키-값 쌍을 현재 딕션너리에 추가하거나, 기존의 키가 있으면 값을 업데이트#문법
dict.update(other_dict)
other_dict
: 다른 딕셔너리나 키-값 쌍을 포함하는 반복 가능한 객체 (리스트, 튜플 등).# 기존 딕셔너리
my_dict = {"name": "Alice", "age": 25}
# 다른 딕셔너리의 키-값 쌍을 추가
my_dict.update({"age": 30, "city": "New York"})
print(my_dict) # {'name': 'Alice', 'age': 30, 'city': 'New York'}
# update()는 age의 값을 25에서 30으로 업데이트하고, 새로운 키 city를 추가
# 키-값 쌍을 리스트로 전달
my_dict.update([("country", "USA"), ("phone", "123-4567")])
print(my_dict) # {'name': 'Alice', 'age': 30, 'city': 'New York', 'country': 'USA', 'phone': '123-4567'}
# update()는 리스트 안에 튜플로 전달된 키-값 쌍을 추가(country와 phone)
grades = {"Alice": 85, "Bob": 92, "Charlie": 78}
# 성적 조회
print(grades["Alice"]) # 85
# 성적 추가
grades["David"] = 88
# 성적 업데이트
grades["Alice"] = 90
print(grades) # {'Alice': 90, 'Bob': 92, 'Charlie': 78, 'David': 88}
딕셔너리는 리스트나 다른 딕셔너리를 값으로 가질 수 있다.
students = {
"Alice": {"age": 25, "grades": [85, 90, 88]},
"Bob": {"age": 22, "grades": [78, 88, 85]},
}
# Alice의 나이와 성적 조회
print(students["Alice"]["age"]) # 25
print(students["Alice"]["grades"]) # [85, 90, 88]
딕셔너리는 키를 사용해 값을 검색하여 빠른 검색이 가능하며 문자열, 숫자, 리스트, 딕셔너리 등 다양한 데이터 구조를 값으로 저장할 수 있다. 또한 딕셔너리는 키-값 쌍으로 이루어져 있어 구조화된 데이터나 레코드를 관리하는 데 유용하다.