Словари в Python: что нужно знать и как пользоваться
Продолжаем осваивать «змеиный» язык. Сегодня поговорим о словарях — важном инструменте для хранения данных в Python.
Иллюстрация: Оля Ежак для Skillbox Media
Нет, словари нужны не для того, чтобы переводить запутанный код программистов на человеческий. Их используют для того, чтобы удобно хранить данные и быстро получать к ним доступ по запросу. В этой статье подробно разберём, что такое словари и как с ними работать в Python.
А если вы уже знакомы со словарями и хотите освежить в памяти отдельные моменты, используйте навигацию или скачайте шпаргалку в конце статьи.
Что такое словарь
Словарь в языках программирования — это что-то вроде телефонной книги, где под каждым номером скрывается какой-то человек.
Только на языке разработчиков номера называют ключами, а людей, которым они принадлежат, — значениями. Вот как это можно представить в виде таблицы:
Ключ | Значение |
---|---|
8 (984) 123-53-11 | Дизайнер Валера |
8 (934) 256-32-54 | Менеджер Егор (не отвечать) |
При этом ключи в словарях уникальны, а значения могут повторяться. Условно говоря, дизайнеру Валере может принадлежать сколько угодно номеров — но у каждого номера может быть только один владелец.
Мы привели пример с телефонной книгой, но вы можете хранить в словаре всё что угодно: названия песен, имена покупателей, товары в интернет-магазине и так далее. При этом стоит помнить важное правило:
Ключами могут быть строки, числа (целые и дробные) и кортежи. Нельзя использовать списки, словари и другие изменяемые типы данных. В значения можно «положить» любые типы данных — и даже новые словари.
Например, давайте в качестве ключа укажем название книги, а значением сделаем её автора.
Ключ | Значение |
---|---|
«Гарри Поттер и философский камень» | Джоан Роулинг |
«Убить пересмешника» | Харпер Ли |
«Грокаем алгоритмы» | Адитья Бхаргава |
Теперь, если у нас есть название книги, мы можем быстро найти её автора. Этим словари и удобны: знаем ключ — моментально получаем значение.
👉 Словарь — это неупорядоченная структура данных. Это значит, что все пары «ключ — значение» хранятся в произвольном порядке. Идея в том, что нам неважно, где находится элемент: в начале, в серединие или в конце. Важно то, что он лежит где-то внутри и мы можем при случае его достать.
Пример упорядоченной структуры — это список. Там у всех элементов есть свои индексы, благодаря которым их можно отсортировать как душе угодно. Если хотите больше знать о списках, читайте другую нашу статью. А мы пойдём дальше — создадим наш первый словарь.
Как создать словарь в Python
Словари в Python оформляются фигурными скобками. Внутри них находятся пары «ключ — значение». Первым пишется ключ, а затем, через двоеточие, — значение. Сами пары отделяются друг от друга запятыми.
Если вместо значений не указать ничего, язык автоматически создаст множество (а не словарь), где будут только ключи:
Выведем на экран содержимое словаря с помощью функции print:
Результат:
Теперь попробуем создать и вывести полноценный словарь:
Результат:
Бинго!
Операции со словарями
Мало просто создать словарь — иногда нам нужно взаимодействовать с отдельными его элементами. Разберёмся с базовыми операциями.
Как достать значение ключа из словаря
Если нам известен ключ, можно быстро извлечь из словаря его значение — для этого используйте квадратные скобки.
Если указать неправильный ключ, мы получим ошибку:
Ошибка говорит нам, что по заданному ключу ничего не нашлось.
Как добавить новый элемент в словарь Python
Теперь попробуем добавить в наш словарь с книгами ещё одну запись. Чтобы это сделать, в квадратных скобках указываем ключ, а потом, через знак равенства, добавляем значение.
Пробуем вывести содержимое словаря на экран — видим, что новая запись добавилась в самом конце.
Готово!
Как удалить элемент из словаря Python
Чтобы удалить элемент из словаря, используют команду del. При этом нам достаточно ввести только ключ, а значение удалится вместе с ним.
Синтаксис немного необычный: мы пишем команду del перед тем, как обратиться к словарю. Но всё прекрасно работает, мы проверили :)
Как изменить значение ключа в словаре
Здесь всё просто: в квадратных скобках пишем уже существующий ключ, а через знак равенства указываем новое значение.
Выводим в консоль — видим, что значение первой пары поменялось.
Важное замечание. Если указать неправильный ключ, то мы вместо обращения к уже существующей паре создадим новую:
Чтобы избежать таких ситуаций, можно использовать безопасный метод get(), о котором мы поговорим в следующем разделе.
Какие методы работают со словарями в Python
Для словарей создали много полезных методов, которые облегчают привычные операции — например, можно одной функцией добавить в словарь несколько элементов или предусмотреть обработку ошибок.
Метод update()
Что делает: добавляет в словарь одну или сразу несколько пар «ключ — значение».
Как использовать: объявляем метод update(), внутри которого создаём новый словарь из элементов, которыми хотим дополнить существующий.
Метод get()
Что делает: возвращает значение из словаря по ключу — или None, если такого ключа не существует.
Попробуем передать ключ, которого нет в словаре:
👉 У этого метода есть тайный козырь в рукаве. Вместо сухого и формального None он может вывести любое значение, которое вы захотите, — например, сообщение об ошибке. Для этого надо прописать нужное значение вторым аргументом. Мы решили добавить строчку с ошибкой:
В этом состоит главное преимущество метода get() перед обычными квадратными скобками — для обработки ошибок можно не писать объёмные конструкции try/except, а ограничиться всего одной аккуратной строчкой.
Метод pop()
Что делает: удаляет элемент из словаря по ключу.
Метод keys()
Что делает: возвращает все ключи из словаря — но без значений.
Метод values()
Что делает: возвращает все значения из словаря — но без ключей.
Метод items()
Что делает: возвращает все пары «ключ — значение».
Что запомнить
Лучше не заучивать голую теорию, а сразу отрабатывать знания на практике. Начать можно, например, с бесплатных упражнений на w3schools.com. А чтобы быстро находить нужный метод и не ходить каждый раз в гугл, можете сохранить себе шпаргалку по ссылке или таблицу ниже.
Метод | Что делает |
---|---|
clear() | Удаляет все элементы из словаря |
copy() | Создаёт копию словаря |
update() | Добавляет в словарь одну или несколько пар «ключ — значение» |
pop() | Удаляет элемент из словаря по ключу |
keys() | Возвращает список ключей из словаря |
values() | Возвращает список значений из словаря |
items() | Возвращает все пары «ключ — значение» |
popitem() | Удаляет последнюю добавленную пару «ключ — значение» |
get() | Возвращает значение из словаря по ключу — или None, если такого ключа не существует. Можно указать своё значение в качестве второго аргумента |
setdefault() | Возвращает значение указанного ключа. Если ключа не существует, создаёт его и добавляет в словарь со значением None или тем, что вы добавите в качестве второго аргумента |