Ответ
Средняя (амортизированная) сложность доступа по ключу — O(1). Это обеспечивается внутренней реализацией словаря как хеш-таблицы.
Как это работает:
- Python вычисляет хеш ключа (например, строки
'b'). - По этому хешу находится «корзина» (bucket), где хранится пара ключ-значение.
- Если в корзине один элемент — доступ мгновенный.
Пример:
config = {'host': 'localhost', 'port': 8080, 'debug': True}
# Сложность ~O(1), не зависит от размера словаря
server_port = config['port']
print(server_port) # 8080
Важные нюансы:
- Худший случай O(n) теоретически возможен при большом количестве коллизий хешей, но на практике, благодаря качественной хеш-функции и динамическому рехешированию, встречается крайне редко.
- Операции
key in dict,dict.get(key), присваиваниеdict[key] = valueтакже имеют среднюю сложность O(1). - Ключ должен быть хешируемым объектом (неизменяемым типом:
int,str,tuple).