Словарь 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
:
Дополнительно смотрите материалы:
>>> 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)]