Полный обзор словарей в Python
Python словари - это невероятно полезный тип данных, который позволяет вам хранить данные в парах ключ:значение
. В этом уроке вы узнаете все, что вам нужно знать для начала работы с Python словарями, включая:
Основы создания словарей для хранения и доступа к данным
Лучшие случаи использования словарей
Добавление и удаление данных в словарях
Как применять функции и методы к словарям
Оглавление
Что такое словари Python?
Python словари — это контейнерные типы данных, как и списки в Python. Словари используют сопоставление ключ-значение, позволяя извлекать значение, ища соответствующий ключ. Они очень похожи на то, что в других языках программирования называется ассоциативными массивами. Это потому, что это массив данных, который ассоциируется с чем-то другим — в данном случае, с ключом.
В отличие от списков Python, которые являются последовательными типами данных, словари Python работают немного иначе. Поскольку списки последовательны, мы можем получить доступ к элементам на основе их позиции. Например, чтобы получить доступ к конкретному элементу в списке Python, мы можем просто обратиться к его индексу:
Поскольку словари Python не являются последовательным типом данных, мы не можем просто получить доступ, скажем, к первому элементу. Для доступа к определенному значению в словаре Python мы используем ключ в словаре для доступа к значению.
В Python словаре может быть несколько ключей. Эти ключи должны быть:
Уникальный – заданный ключ может существовать только один раз
Неизменяемый – это значит, что ключи должны быть таких типов данных, которые нельзя изменить, например, строки
Думайте о словарях Python как о обычных словарях. Вы можете найти значение слова (т.е. ключ) и оно даст вам соответствующее определение (т.е. его значение).
Создание словаря Python
Давайте рассмотрим, как можно создать словарь в Python. Для начала создадим пустой словарь. У нас есть два основных способа сделать это:
Мы можем проверить тип этих словарей, используя встроенную функцию
Аналогично, мы можем загрузить заполненный словарь напрямую. Давайте посмотрим, как это выглядит на примере загрузки словаря с атрибутами человека:
Здесь мы видим, что смогли встроить несколько разных элементов в качестве значений. Например, у нас есть целое число (представляющее возраст), строки (представляющие, скажем, местоположение) и даже списки!
Вы не обязаны писать это на разных строках, но так легче читать. Мы могли бы сделать то же самое, просто написав:
Теперь, когда у вас есть хорошее понимание того, как создавать словари в Python, давайте взглянем на то, как их использовать.
Как словари связаны с наукой о данных?
На этом этапе вы можете задаться вопросом, как связаны словари с наукой о данных? Когда мы получаем данные из интернета, они часто приходят в формате, известном как JSON (JavaScript Object Notation). Этот формат очень похож на формат словарей в Python.
Знание работы с Python-словарями позволяет легко загружать данные из интернета и манипулировать ими. Этот формат невероятно распространен и предоставляет значительно большую гибкость в доступе к данным из различных источников.
Работа со словарями Python
Создание словарей в Python – это одно, но нужно также уметь работать с ними. В этом разделе вы научитесь различным способам доступа к элементам словаря, изменению элементов, а также добавлению и удалению элементов. Существуют разные способы достижения всего этого, но вы изучите самые безопасные и распространенные методы.
Доступ к элементам в словарях Python
Существуют два основных способа доступа к элементам внутри словаря. Можно использовать квадратные скобки, []
, аналогично обращению к элементу списка по его индексу. Также можно использовать метод .get()
Давайте посмотрим, как мы можем использовать квадратные скобки для доступа к элементу.
Это было легко! Одним из недостатков использования метода доступа через квадратные скобки является то, что он плохо работает с несуществующими элементами.
Попробуйте запустить приведенный ниже код для доступа к элементу, который не существует, например, 'hobbies'
, чтобы увидеть, что произойдет:
Мы видим, что при попытке доступа к несуществующему элементу выбрасывается KeyError
. Это указывает на то, что ключ не существует. Хуже всего то, что это фактически приводит к сбою нашей программы (если мы явно не обрабатываем эту ошибку).
Один из способов обойти это - использовать метод .get()
. Метод .get()
просто вернет значение None
, когда ключ не существует.
Метод работает путем применения его к словарю и передачи ключа, значение которого мы хотим вернуть. Давайте посмотрим, как мы можем использовать это для возврата значения для 'name'
Одно из преимуществ использования метода .get()
заключается в том, что мы можем передать значение по умолчанию, которое мы хотим получить, если ключ не существует. Например, если у нас должен был быть ключ с именем 'hobbies'
, содержащий список различных увлечений, мы можем попросить Python вернуть пустой список вместо None.
Посмотрите, сможете ли вы написать код ниже, чтобы это произошло. Решение доступно по нажатию переключателя:
Добавление элементов в словари Python
Добавление элементов в словарь Python невероятно просто! Мы можем просто напрямую присвоить паре key:value
словарь.
Давайте посмотрим, как это выглядит. Мы захотим добавить пункт о хобби в наш словарь.
Python также предоставляет несколько способов объединения двух словарей. Это может быть чрезвычайно полезно, если данные были собраны отдельно и вы не хотите вручную обновлять элементы одного словаря элементами из другого.
Для этого можно использовать метод .update()
. Аналогично, в Python 3.8+ можно использовать оператор |
. Оба метода работают одинаково: словарь справа будет объединен со словарем слева. Любые новые пары "ключ-значение" будут добавлены, а существующие ключи в левом словаре будут обновлены значениями из правого.
Мы видим, что новые элементы из словаря more_info
были добавлены, а существующие элементы были обновлены. Имейте это в виду при обновлении информации!
Изменение существующих элементов словаря Python
Изменение существующих элементов работает так же, как добавление новых! Мы можем просто напрямую присвоить значение существующему ключу и обновить его значение. Дополнительное преимущество в том, что если элемент не существует, то добавляется новый.
Давайте рассмотрим добавление изменения нашего ключа 'location'
в нашем словаре:
Нет ничего сложного в этом! Давайте посмотрим, как удалять элементы из словаря в Python.
Удаление элементов из словарей в Python
Подобно спискам, Python предоставляет несколько способов удаления элементов из словарей. Первый подход, который мы рассмотрим, — использование ключевого слова del
. Это ключевое слово принимает элемент словаря и удаляет его из словаря.
Давайте посмотрим, как мы можем использовать ключевое слово для удаления элемента:
Мы также можем использовать метод .pop()
в Python, чтобы удалить элемент из словаря. Преимущество этого подхода в том, что он возвращает значение до удаления пары ключ-значение. Давайте посмотрим, как это выглядит:
Оба этих метода требуют внимательности, чтобы не удалять несуществующие ключи. Оба этих метода вернут KeyError
, если мы попытаемся удалить несуществующий ключ. Давайте это подтвердим:
Метод .pop()
позволяет нам задать значение по умолчанию, чтобы программа не завершалась с ошибкой, если ключ не существует. Это позволяет нам безопаснее запускать программу.
Давайте посмотрим, как это работает:
Хотя, конечно, это не удаляет ключ, это позволяет нам безопаснее писать программы, которые требуют доступа к ключу и его удаления из словаря.
Методы словаря Python
В Python используется множество методов для работы со словарями – некоторые из них вы уже знаете! В этом разделе вы познакомитесь с новыми методами, которые помогут вам работать с ключами и значениями словарей.
Доступ к элементам словаря с помощью .items()
Мы можем использовать метод .items()
, чтобы легко получить все элементы в словаре. Применение этого метода возвращает объект, похожий на список, содержащий кортежи с ключом и значением каждого элемента словаря.
Это может быть невероятно полезным, если вы хотите обойти ключи и значения. Давайте посмотрим, как это выглядит:
Мы можем перебирать объект dict_items
, чтобы получить доступ как к ключам, так и к значениям.
Доступ к ключам словаря с помощью .keys()
Мы можем легко получить доступ ко всем ключам в словаре, используя метод .keys()
. Он возвращает объект, похожий на список, который содержит все ключи.
Давайте возьмем наш предыдущий словарь и применим метод .keys()
Доступ к значениям словаря с помощью .values()
Подобно методу .keys()
, мы можем получить доступ ко всем значениям в словаре Python с помощью метода .items()
. Этот метод также возвращает объект, похожий на список, который содержит значения всех ключей в словаре.
Давайте применим метод .items()
к нашему словарю:
Проверка членства в словарях Python
Для проверки наличия ключа в словаре Python удобно использовать ключевое слово in
. Давайте посмотрим, как можно проверить, существует ли ключ в словаре, с помощью метода .keys()
На самом деле мы можем упростить этот процесс, не используя метод .keys()
. По умолчанию Python будет проверять членство в ключах словаря. Из-за этого мы можем даже опустить этот метод из нашей проверки членства:
В следующем разделе вы узнаете, как итерироваться по словарям в Python.
Перебор словарей Python
Теперь, когда у вас есть хорошее понимание того, как получить доступ к элементам, ключам и значениям в словарях Python, давайте посмотрим, как можно итеративно обрабатывать словари Python.
Так как методы .items()
, .keys()
, и .values()
возвращают объекты, похожие на списки, мы можем напрямую перебирать их. Давайте сначала посмотрим, как перебирать ключи:
Этот подход работает так же для .items()
.
Но что, если вы хотите перебрать ключи и значения одновременно? Для этого можно использовать так называемую распаковку. Мы можем перебирать возвращаемое значение метода .items()
и распаковывать ключ и значение из возвращаемого кортежа.
Давайте посмотрим, как это выглядит:
В заключительном разделе ниже вы узнаете, являются ли словари в Python упорядоченными или нет.
Упорядочены ли словари Python?
Ответ на вопрос о том, упорядочены ли словари в Python, не является простым да или нет. До версии 3.6 словари в Python были неупорядоченными. Начиная с версии 3.6 (и официально с версии 3.7), словари в Python стали упорядоченными.
Теперь словари Python упорядочены на основе порядка вставки. Это обеспечивает более быстрый доступ.
Упражнение
Ниже вы найдете несколько упражнений, чтобы проверить ваше понимание словарей в Python. Используйте предоставленное рабочее пространство кода, чтобы протестировать ваши решения. Вы можете переключать разделы, чтобы проверить решения.
Создайте словарь, подобный приведенному ниже, и выполните следующие упражнения:
Выведите все значения словаря с использованием цикла for
Добавить новый ключ, содержащий список значений
Обновите ключ местоположения на «Ванкувер».
Заключение и резюме
Фух! Вы дошли до конца руководства! Было много информации о словарях Python, и вы узнали о них множество новых вещей!
Краткий обзор всего, что вы узнали о словарях Python
К элементам можно обращаться с помощью методов
.items()
,.keys()
, и.values()
.Метод
.pop()
позволяет передавать значение по умолчанию, что позволяет программе работать безопасно, если ключ не существует.Мы можем удалять элементы с помощью
del
или.pop()
.Мы можем добавлять элементы, просто присваивая значение ключу.
Словари похожи на формат JSON, который часто используется для хранения данных в интернете.
Вы можете создать словари с помощью функции
dict()
или фигурных скобок{}
.Значения могут быть любого типа и могут дублироваться.
Ключи должны быть неизменяемыми и уникальными.
Словари — это ассоциативный массив значений, содержащий пары ключ
Дополнительные ресурсы
Посмотрите учебные пособия ниже для получения дополнительных ресурсов:
Python: сортировка словаря по значениям
Слияние словарей Python – объединение словарей (7 способов)
Python: Pretty Print a Dict (словарь) – 4 способа
Python: получить ключ словаря с максимальным значением (4 способа)
Last updated