Вложенные словари в Python
Вложенный словарь означает dictionary в словаре. В паре «key:value» dictionary может занимать место value.
Ниже приводится простой пример вложенного словаря в Python глубины два:
В этом руководстве мы узнаем, как создать вложенный словарь, получить доступ к элементам в более глубоких словарях.
Как создать?
В следующей программе мы создали и распечатали вложенный словарь и значение, соответствующее ключу. Кроме того, мы подтвердили типы внешнего словаря и внутреннего словаря, распечатав тип в выводе консоли.
Доступ к внутренним элементам
Доступ к значениям из вложенного словаря аналогичен доступу к элементам многомерного массива, где размерность массива переводится в глубину вложенного словаря.
В предыдущем примере мы создали вложенный словарь глубины два. В следующей программе мы получим доступ к значению из этого словаря с помощью клавиши moo.
Как создать словарь в словаре?
Нужен словарь, в который добавится ключ, а его значение будет другой словарь, в который будут добавляться другие ключи со значениями. Пробовал делать такой код в функции:
Но в итоге создаётся словарь, в котором значение это словарь, которое не добавляет новых ключей в словаре внутри. Пример: ‘key’:<'key1':'value1'>, т.е. заменяет последним значением-словарём, а нужно чтобы добавляло: ‘key’:
![]()
Ключами словаря могут быть только шифруемые объекты: числа, строки, картежи и frozenset. Если индексировать словари другими словарями, то при изменении словаря, который является ключем потеряется возможность извлечь его значение поскольку изменится его хеш. Если в словаре необходимо сохранить другой словарь, то пожалуйста. Они гетерогенны по своей природе
Или тоже самое в форме литерала
Примеры наполнения словаря, в котором значения являются также словарями:
Обращение к словарю-значению осуществляется через двойное указание ключей:
Обратиться к словарю-значению без «словарного» ключа не получиться:
Если вам необходимо обращаться именно к элементам словарей внутри, можно пересобрать словарь и обращаться прямо:
Словари и их методы в Python
Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Вот пример словаря на Python:
Данный словарь использует строки в качестве ключей, однако ключом может являться в принципе любой неизменяемый тип данных. Значением же конкретного ключа может быть что угодно. Вот ещё один пример словаря, где ключами являются числа, а значениями — строки:
Важное уточнение: если вы попробуете использовать изменяемый тип данных в качестве ключа, то получите ошибку:
Прим. перев. На самом деле проблема не с изменяемыми, а с нехэшируемыми типами данных, но обычно это одно и то же.
Получение данных из словаря
Для получения значения конкретного ключа используются квадратные скобки [] . Предположим, что в нашем словаре есть пара ‘марафон’: 26 .
Опять же, вы получите ошибку, если попытаетесь получить значение по несуществующему ключу. Для избежания подобных ошибок существуют методы, о которых мы сейчас поговорим.
Добавление и обновление ключей
Добавление новых пар в словарь происходит достаточно просто:
Обновление существующих значений происходит абсолютно также:
Удаление ключей
Для удаления ключа и соответствующего значения из словаря можно использовать del
Методы
Словари в Python имеют множество различных полезных методов, которые помогут вам в работе с ними. Вот лишь некоторые из них:
Update
Метод update() пригодится, если нужно обновить несколько пар сразу. Метод принимает другой словарь в качестве аргумента.
Если вас интересует, почему данные в словаре расположены не в том порядке, в котором они были внесены в него, то это потому что словари не упорядочены.
Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None .
Метод можно использовать для проверки наличия ключей в словаре:
Также можно указать значение по умолчанию, которое будет возвращено вместо None , если ключа в словаре не окажется:
Метод pop() удаляет ключ и возвращает соответствующее ему значение.
Метод keys() возвращает коллекцию ключей в словаре.
Values
Метод values() возвращает коллекцию значений в словаре.
Items
Метод items() возвращает пары «ключ — значение».
Итерация через словарь
Вы можете провести итерацию по каждому ключу в словаре.
Очевидно, вместо story_count можно использовать story_count.keys() .
В примере кода ниже цикл for использует метод items() для получения пары «ключ — значение» на каждую итерацию.