Включите исполнение JavaScript в браузере, чтобы запустить приложение.
13 окт 2024

Словарь в Python: что это такое и как с ним работать

В статье поговорим о словарях (dict) в Python. Базовые операции — достать и изменить значение ключа, добавить новый элемент, удалить элемент из словаря. Изучим основные методы — update(), get(), keys(), items().
  1. Что такое словарь в Python
  2. Создание словаря в Python
  3. Операции со словарями
  4. Основные методы словарей Python

Что такое словарь в Python

Словарь в Python — это структура данных, которая представляет из себя неупорядоченную коллекцию пар «ключ-значение». Чаще всего словарь используется для хранения и быстрых манипуляций над связанными данными.

Что нужно знать об этой структуре данных:

  • в ней можно добавлять, удалять и изменять элементы;
  • каждый ключ уникален, то есть, в одном словаре не может быть двух и более одинаковых ключей, при этом одинаковых значений может быть сколько угодно;
  • в ней обеспечен быстрый доступ к данным;
  • ключи должны быть неизменяемыми типами данных — строки, числа и прочие, а значения могут быть представлены любым типом;
  • определенного порядка, как, например, в списках в Python не предусмотрено.

Создание словаря в Python

Создание — это первый шаг к началу работы с этой структурой данных, сделать его можно следующими способами: 

# Пустой словарь с использованием фигурных скобок
empty_dict = {}


# Здесь уже есть содержимое: 'name', 'age' и 'city' — ключи, 'Alice', 30 и 'New York' — значения
person_data = {
    'name': 'Alice',
    'age': 30,
    'city': 'Moscow'
}


# Можно создавать и такие вложенные структуры, если нужна определенная иерархия данных
nested_dict = {
    'person1': {'name': 'Alice', 'age': 30},
    'person2': {'name': 'Eva', 'age': 28}
}
print(nested_dict)
# Вывод
# {'person1': {'name': 'Alice', 'age': 30}, 'person2': {'name': 'Eva', 'age': 28}}


# Пустой словарь с использованием функции dict()
empty_dict = dict()


# Словарь из списка кортежей
person_data = dict([('name', 'Alice'), ('age', 30), ('city', 'Moscow')]
print(person_data)


# Словарь с использованием именованных аргументов
person_data = dict(name='Alice', age=30, city='Moscow')
print(person_data)


# Вывод для двух последних примеров будет одинаковым
# {'name': 'Alice', 'age': 30, 'city': 'Moscow'}
py

На практике словари часто создают с помощью фигурных скобок, так как код становится лаконичным, читаемым и более производительным. Функция dict() полезна, если нужно создать словарь из итерируемых объектов.

Операции со словарями

Под операциями подразумевают различные способы работы с элементами: добавление, изменение, удаление и другие. Такое взаимодействие осуществляется следующим образом:

person_data = {'name': 'Alice', 'age': 30}


# Доступ к элементам, к которым нужно обращаться через квадратные скобки
name = person_data['name']
print(name)
# Вывод
# Alice


# Добавление нового элемента
person_data['city'] = 'Moscow'
print(person_data)
# Вывод
# {'name': 'Alice', 'age': 30, 'city': 'Moscow'}


# Изменение значения элемента — выполняется так же, как добавление нового
person_data['age'] = 31
print(person_data)
# Вывод
# {'name': 'Alice', 'age': 31, 'city': 'Moscow'}


# Удаление элементов с использованием оператора del
del person_data['age']
print(person_data)
# Вывод
# {'name': 'Alice', 'city': 'Moscow'}


# Проверка наличия определенного ключа
if 'age' in person_data:
    print("Я нашел возраст")
# Вывод
# Я нашел возраст
py

В целом, все эти операции интуитивно понятны, поэтому трудностей с их проведением возникать не должно.

Основные методы словарей Python

Самые полезные и нужные методы тоже рассмотрим на примерах:

book_dict = {'title': 'Мастер и Маргарита', 'author': 'Михаил Булгаков', 'year': 1967}


# Метод keys() позволяет получить все ключи
keys = book_dict.keys()
print(keys)
# Вывод
# dict_keys(['title', 'author', 'year'])


# values() нужен для получения всех значений
values = book_dict.values()
print(values)
# Вывод
# dict_values(['Мастер и Маргарита', 'Михаил Булгаков', 1967])


# items() — метод для получения всех пар в виде кортежей
items = book_dict.items()
print(items)
# Вывод
# dict_items([('title', 'Мастер и Маргарита'), ('author', 'Михаил Булгаков'), ('year', 1967)])


# get() используется, если нужно получить значение по заданному ключу при его наличии, в ином случае вернется значение по умолчанию, этого поможет избежать KeyError
year = book_dict.get('year', 'Нужно добавить эти данные')
print(year)
# Вывод
# 1967


pages = book_dict.get('pages', 'Нужно добавить эти данные')
print(pages)
# Вывод
# Нужно добавить эти данные


# copy() выполняет поверхностное копирование, если внутри есть списки, кортежи и множества
# использовать copy() нужно аккуратно, для глубокого копирования используется copy.deepcopy()
new_dict = book_dict.copy()
print(new_dict)
# Вывод
# {'title': 'Мастер и Маргарита', 'author': 'Михаил Булгаков', 'year': 1967}


# update() обновляет словарь: изменяет или добавляет элементы
book_dict.update({ 'pages': 480})
print(book_dict)
# Вывод
# {'title': 'Мастер и Маргарита', 'author': 'Михаил Булгаков', 'year': 1967, 'pages': 480}


# С помощью update() можно объединить две структуры
book_dict1 = {'pages': 480}
book_dict.update(book_dict1)
print(book_dict)
# Вывод
# {'title': 'Мастер и Маргарита', 'author': 'Михаил Булгаков', 'year': 1967, 'pages': 480}


# clear() удаляет все элементы
book_dict.clear()
print(book_dict)
# Вывод
# {}
py

Эти методы стоит запомнить, они будут необходимы довольно часто.