Словари (Dictionary) в Python
Словарь Python — это коллекция элементов, похожая на списки и кортежи. Однако, в отличие от списков и кортежей, каждый элемент словаря — это пара ключ-значение (состоящая из ключа и значения).
Создание словаря
Мы создаём словарь, помещая пары key: value в фигурные скобки {}, разделённые запятыми. Например:
# создание словаря
country_capitals = {
"Germany": "Berlin",
"Canada": "Ottawa",
"England": "London"
}
# вывод словаря
print(country_capitals)
Вывод
{'Germany': 'Berlin', 'Canada': 'Ottawa', 'England': 'London'}
Словарь country_capitals содержит три элемента (пары ключ-значение), где 'Germany' — ключ, а 'Berlin' — присвоенное ему значение.
Примечание
Ключи словаря должны быть неизменяемыми (immutable), например, кортежи, строки, целые числа. Мы не можем использовать изменяемые объекты, такие как списки, в качестве ключей.
Также можно создать словарь с помощью встроенной функции Python
dict().
Допустимые и недопустимые словари
Ключи словаря должны быть неизменяемыми
Неизменяемые объекты нельзя изменить после создания. Это, например, целые числа, кортежи и строки.
# допустимый словарь
# целое число как ключ
my_dict = {1: "one", 2: "two", 3: "three"}
# допустимый словарь
# кортеж как ключ
my_dict = {(1, 2): "one two", 3: "three"}
# недопустимый словарь
# Ошибка: использование списка в качестве ключа запрещено
my_dict = {1: "Hello", [1, 2]: "Hello Hi"}
# допустимый словарь
# строка как ключ, список как значение
my_dict = {"USA": ["Chicago", "California", "New York"]}
В этом примере мы использовали целые числа, кортежи и строки в качестве ключей. Использование списка как ключа вызвало ошибку из-за изменяемости списка.
Примечание
Значения словаря могут быть любого типа, включая изменяемые типы, такие как списки.
Ключи словаря должны быть уникальными
Если есть дублирующиеся ключи, более позднее значение перезаписывает предыдущее.
hogwarts_houses = {
"Harry Potter": "Gryffindor",
"Hermione Granger": "Gryffindor",
"Ron Weasley": "Gryffindor",
# дублирующийся ключ с другим факультетом
"Harry Potter": "Slytherin"
}
print(hogwarts_houses)
Вывод
{'Harry Potter': 'Slytherin', 'Hermione Granger': 'Gryffindor', 'Ron Weasley': 'Gryffindor'}
Здесь ключ Harry Potter сначала присвоен Gryffindor. Однако есть вторая запись, где Harry Potter присвоен Slytherin. Поскольку дубликаты ключей не допускаются, последнее значение Slytherin перезаписывает предыдущее Gryffindor.
Доступ к элементам словаря
Мы можем получить доступ к значению элемента словаря, поместив ключ в квадратные скобки.
country_capitals = {
"Germany": "Berlin",
"Canada": "Ottawa",
"England": "London"
}
# доступ к значению ключа
print(country_capitals["Germany"]) # Вывод: Berlin
print(country_capitals["England"]) # Вывод: London
Примечание
Также можно использовать метод get() для доступа к элементам словаря.
Добавление элементов в словарь
Мы можем добавить элемент в словарь, присвоив значение новому ключу. Например:
country_capitals = {
"Germany": "Berlin",
"Canada": "Ottawa",
}
# добавляем элемент с ключом "Italy" и значением "Rome"
country_capitals["Italy"] = "Rome"
print(country_capitals)
Вывод
{'Germany': 'Berlin', 'Canada': 'Ottawa', 'Italy': 'Rome'}
Удаление элементов словаря
Мы можем использовать оператор del для удаления элемента из словаря.
country_capitals = {
"Germany": "Berlin",
"Canada": "Ottawa",
}
# удаляем элемент с ключом "Germany"
del country_capitals["Germany"]
print(country_capitals)
Вывод
{'Canada': 'Ottawa'}
Примечание
Также можно использовать метод pop() для удаления элемента из словаря.
Если нужно удалить все элементы словаря сразу, используем метод clear().
country_capitals = {
"Germany": "Berlin",
"Canada": "Ottawa",
}
# очищаем словарь
country_capitals.clear()
print(country_capitals)
Вывод
{}
Изменение элементов словаря
Словари Python изменяемы. Мы можем изменить значение элемента словаря, ссылаясь на его ключ.
country_capitals = {
"Germany": "Berlin",
"Italy": "Naples",
"England": "London"
}
# меняем значение ключа "Italy" на "Rome"
country_capitals["Italy"] = "Rome"
print(country_capitals)
Вывод
{'Germany': 'Berlin', 'Italy': 'Rome', 'England': 'London'}
Примечание
Также можно использовать метод update() для добавления или изменения элементов словаря.
Итерация по словарю
Словарь — это упорядоченная коллекция элементов (начиная с Python 3.7), поэтому он сохраняет порядок элементов.
Мы можем итерироваться по ключам словаря, используя цикл for.
country_capitals = {
"United States": "Washington D.C.",
"Italy": "Rome"
}
# выводим ключи по одному
for country in country_capitals:
print(country)
print()
# выводим значения по одному
for country in country_capitals:
capital = country_capitals[country]
print(capital)
Вывод
United States
Italy
Washington D.C.
Rome
Длина словаря
Можно определить длину словаря с помощью функции len().
country_capitals = {"England": "London", "Italy": "Rome"}
# получаем длину словаря
print(len(country_capitals)) # Вывод: 2
numbers = {10: "ten", 20: "twenty", 30: "thirty"}
# получаем длину словаря
print(len(numbers)) # Вывод: 3
countries = {}
# получаем длину словаря
print(len(countries)) # Вывод: 0
Методы словаря Python
Распространённые методы словаря:
Функция |
Описание |
|---|---|
|
Удаляет элемент с указанным ключом. |
|
Добавляет или изменяет элементы. |
|
Удаляет все элементы. |
|
Возвращает все ключи. |
|
Возвращает все значения. |
|
Возвращает значение указанного ключа. |
|
Возвращает последнюю вставленную пару (ключ, значение). |
|
Возвращает копию словаря. |
Проверка принадлежности
Мы можем проверить, существует ли ключ в словаре, с помощью операторов in и not in.
file_types = {
".txt": "Text File",
".pdf": "PDF Document",
".jpg": "JPEG Image",
}
# использование операторов in и not in
print(".pdf" in file_types) # Вывод: True
print(".mp3" in file_types) # Вывод: False
print(".mp3" not in file_types) # Вывод: True
Примечание
Оператор in проверяет наличие ключа, а не значения.
Видео: словари Python для пар ключ/значение
См. также: Множества (Set) в Python, Функции в Python, Вложенный словарь в Python.