Sobes.tech
Middle
42

Почему ключи в словаре Python должны быть неизменяемыми и можно ли использовать изменяемые ключи?

Companies where asked
СБЕРСБЕР
ДомкликДомклик

Answer from AI

sobes.tech AI

Ключи в словаре Python должны быть неизменяемыми, потому что словарь использует хеширование для быстрого доступа к значениям. Если ключ изменяемый, его хеш может измениться после вставки в словарь, что приведёт к невозможности найти этот ключ и, соответственно, значение.

Например, строки, числа, кортежи (состоящие из неизменяемых элементов) являются подходящими ключами, так как их хеш неизменен.

Использовать изменяемые ключи (например, списки или словари) нельзя, потому что они не имеют постоянного хеша и не поддерживают метод hash(). Попытка использовать изменяемый объект в качестве ключа вызовет ошибку TypeError.

Пример:

my_dict = {}
my_dict[[1, 2, 3]] = "value"  # TypeError: unhashable type: 'list'

Таким образом, неизменяемость ключей гарантирует корректную работу хеш-таблицы словаря.