Middle
Защо ключовете в речника на Python трябва да са неизменяеми и могат ли да се използват променяеми ключове?
sobes.tech AI
Отговор от AI
Ключовете в речника на Python трябва да са неизменяеми, защото речникът използва хеширане за бърз достъп до стойностите. Ако ключът е променлив, неговият хеш може да се промени след вмъкването му в речника, което прави невъзможно намирането на този ключ и съответно стойността.
Например, низове, числа и кортежи (състоящи се от неизменяеми елементи) са подходящи ключове, тъй като техният хеш е постоянен.
Не може да се използват променливи ключове (като списъци или речници), тъй като те нямат постоянен хеш и не поддържат метода hash(). Опитът да се използва променлив обект като ключ ще доведе до грешка TypeError.
Пример:
my_dict = {}
my_dict[[1, 2, 3]] = "value" # TypeError: unhashable type: 'list'
По този начин неизменяемостта на ключовете гарантира правилната работа на хеш таблицата на речника.