Какова временная сложность операции получения значения по ключу в словаре Python (dict)?

Ответ

Временная сложность получения значения по ключу в словаре Python (dict) в среднем составляет O(1) (константное время).

Почему O(1)?

Словари в Python реализованы на основе хеш-таблицы. Когда вы запрашиваете my_dict[key], происходит следующее:

  1. Вычисляется хеш от ключа hash(key). Эта операция занимает константное время.
  2. По значению хеша определяется индекс в нижележащем массиве (массиве "корзин"), где должно храниться значение.
  3. Происходит доступ к элементу по этому индексу.

Все эти шаги в среднем выполняются за постоянное время, не зависящее от количества элементов в словаре.

Худший случай:

В редких случаях, когда возникает множество коллизий (разные ключи дают одинаковый хеш), сложность может деградировать до O(n). В этой ситуации для нахождения нужного элемента приходится перебирать все ключи, попавшие в одну "корзину". Однако благодаря качественным хеш-функциям и механизму изменения размера таблицы на практике это почти не встречается.

Требование к ключам: Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое значение в течение всего своего жизненного цикла (например, int, str, tuple).