На этом шаге мы приведем краткую характеристику этого типа.
Из-за своей важности Python содержит надежную реализацию словаря, которая встроена непосредственно в ядро языка: тип данных dict.
См. документацию Python "Ассоциативные типы - dict": https://docs.python.org/3/library/stdtypes.html#mapping-types-dict.
Для работы со словарями в своих программах Python также предоставляет немного полезного "синтаксического сахара". Например, синтаксис выражения с фигурными скобками для словаря и конструкция включения в словарь позволяют удобно определять новые объекты-словари:
>>> phonebook = {
'боб': 7387,
'элис': 3719,
'джек': 7052,
}
>>> squares = {x: x * x for x in range(6)}
>>> phonebook['элис']
3719
>>> squares
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Есть некоторые ограничения относительно того, какие объекты могут использоваться в качестве допустимых ключей.
Словари Python индексируются ключами, у которых может быть любой хешируемый тип: хешируемый объект имеет хеш-значение, которое никогда не меняется в течение его жизни, и его можно сравнивать с другими объектами.
См. глоссарий документации Python "hashable": https://docs.python.org/3/glossary.html.
Кроме того, эквивалентные друг другу хешируемые объекты должны иметь одинаковое хеш-значение.
Неизменяемые типы, такие как строковые значение и числа, являются хешируемыми объектами и хорошо работают в качестве ключей словаря. В качестве ключей словаря также можно использовать объекты-кортежи - при условии, что они сами содержат только хешируемые типы.
Для большинства вариантов использования встроенная в Python реализация словаря делает все, что вам нужно. Словари хорошо оптимизированы и лежат в основе многих частей языка: например, и атрибуты класса, и переменные в стековом фрейме во внутреннем представлении хранятся в словарях.
Словари Python основаны на хорошо протестированной и тонко настроенной реализации хеш-таблицы, которая обеспечивает ожидаемые характеристики производительности с временной сложностью O(1) для операций поиска, вставки, обновления и удаления в среднем случае.
Нет особых причин не использовать стандартную реализацию diet, включенную в Python. Тем не менее существуют специализированные сторонние реализации словаря, например списки с пропусками или словари на основе B-деревьев.
Помимо "обыкновенных" объектов diet, стандартная библиотека Python также содержит ряд реализаций специализированных словарей. Все эти специализированные словари опираются на встроенный класс словаря (и обладают его характеристиками производительности), но помимо этого еще добавляют некоторые удобные свойства.
Давайте их рассмотрим.
На следующем шаге мы рассмотрим класс collections.OrderedDict.