Сообщить об ошибке.

Словарь dict в Python

Словарь dict - это изменяемый контейнерный объект, который поддерживает поиск произвольных ключей. В языке Python тип данных словарь dict представлен встроенным классом dict().

Ключи словаря - это произвольные, неизменяемые (хешируемые) значения. Значения, которые не являются хешируемыми не могут использоваться в качестве ключей. Это такие значения, которые содержат list списки, сами словари dict или другие изменяемые типы, которые сравниваются по значению, а не по идентификатору объекта.

Числовые типы, используемые для ключей, подчиняются обычным правилам числового сравнения: если два числа при сравнении считаются равными, например 1 == 1.0, то они могут использоваться взаимозаменяемо для индексирования одной и той же записи словаря. Поскольку процессоры хранят числа с плавающей запятой в качестве приближений, то неразумно использовать их в качестве ключей словаря.

Словари можно создать, поместив разделенный запятыми список пар key: value в фигурные скобки {} или с помощью конструктора встроенного класса dict().

{'jack': 4098, 'sjoerd': 4127} 
# или
{4098: 'jack', 4127: 'sjoerd'}

Словари поддерживают следующие операции:

  • Словари поддерживают различные методы, которые описаны в разделе "Операции со словарями".
  • Методы словаря dict.keys(), dict.values() и dict.items() возвращают списки-представления.
  • Словари считаются равными тогда и только тогда, когда они имеют одинаковые пары (key, value). Равенство не зависит от порядка следования ключей.
  • Такие сравнения как '<', '<=', '>=', '>' поднимают исключение TypeError.

Свойства типа данных словарь dict:

  • Словари гарантированно сохраняют порядок вставки элементов (С версии Python-3.7).
  • Обновление ключа не влияет на порядок расположения элементов словаря.
  • Ключи, добавленные после удаления, вставляются в конец словаря.
  • Словари и словарные представления стали обратимы. Другими словами их можно развернуть с сохранением порядка вставки элементов. Не путать с обратной сортировкой. (С версии Python-3.8)
  • Cписки-представления обеспечивают динамическое представление записей словаря. То есть при изменении словаря они отражают эти изменения.

Дополнительно смотрите материалы:

Примеры операций со словарями:

>>> d = {"one": 1, "two": 2, "three": 3, "four": 4}
>>> d
# {'one': 1, 'two': 2, 'three': 3, 'four': 4}

# гарантированное сохранение порядка вставки
>>> list(d)
# ['one', 'two', 'three', 'four']
>>> list(d.values())
# [1, 2, 3, 4]

# обновление ключа не влияет на порядок
>>> d["one"] = 42
>>> d
# {'one': 42, 'two': 2, 'three': 3, 'four': 4}

# После удаления, ключ вставляются в конец словаря
>>> del d["two"]
>>> d["two"] = None
>>> d
# {'one': 42, 'three': 3, 'four': 4, 'two': None}

Словари и словарные представления стали обратимы:

>>> d = {"one": 1, "two": 2, "three": 3, "four": 4}
>>> d
# {'one': 1, 'two': 2, 'three': 3, 'four': 4}

>>> list(reversed(d))
# ['four', 'three', 'two', 'one']

>>> list(reversed(d.values()))
# [4, 3, 2, 1]

>>> list(reversed(d.items()))
# [('four', 4), ('three', 3), ('two', 2), ('one', 1)]