Словарь 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
:
Так же смотрите использование словарей dict в Python
>>> 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)]