- Что такое словарь в Python
- Создание словаря в Python
- Операции со словарями
- Основные методы словарей 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'}
На практике словари часто создают с помощью фигурных скобок, так как код становится лаконичным, читаемым и более производительным. Функция 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("Я нашел возраст")
# Вывод
# Я нашел возраст
В целом, все эти операции интуитивно понятны, поэтому трудностей с их проведением возникать не должно.
Основные методы словарей 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)
# Вывод
# {}
Эти методы стоит запомнить, они будут необходимы довольно часто.