Выбор ответа Middle Типы, изменяемость и сравнение обновлено
Всегда ли кортеж хешируем
Вопрос
Что произойдёт при {(1, [2, 3]): "x"}?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: TypeError: unhashable type: 'list'. Хеш кортежа вычисляется из хешей элементов, а у списка хеша нет.
Варианты ответа
- Словарь создастся: кортеж неизменяемый, значит хешируемый
- Словарь создастся, но ключ скопируется глубоко
- Ключ превратится в строку
"(1, [2, 3])" TypeError: unhashable type: 'list'правильный ответ
Разбор
Хеш кортежа вычисляется из хешей элементов, а у списка хеша нет. Поэтому кортеж со списком внутри не хешируем, хоть и неизменяем сам по себе. Python не копирует ключи и не приводит их к строкам: это поведение JavaScript-объектов, а не dict.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.