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'
Таким образом, неизменяемость ключей гарантирует корректную работу хеш-таблицы словаря.