Вступить в клуб →
лёгкаявопросХеш-таблицы, словари и множества

Изменяемый объект как ключ словаря: что произойдёт при попытке

Разработчик хочет кешировать результаты по набору параметров:

cache = {}
key = ["user", 42]
cache[key] = "result"

Что произойдёт при выполнении последней строки и почему?

  • Код отработает: список будет автоматически преобразован в кортеж перед хешированием, ведь кортеж — неизменяемый аналог списка
  • Код отработает, но при изменении списка запись потеряется: хеш пересчитывается заново и поиск уходит в другую корзину
  • Код отработает: словарь хеширует список по его адресу в памяти, как любой объект без собственного `__hash__`
  • Будет выброшено `TypeError: unhashable type: 'list'` — у изменяемого списка нет хеша, чтобы запись нельзя было потерять после его изменения

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела