619просмотров
7.3%от подписчиков
19 марта 2026 г.
Score: 681
Подробное объяснение (по шагам) 1️⃣При создании словаря сначала добавляется пара True: "yes". 2️⃣Затем интерпретатор видит ключ 1. Так как тип bool наследуется от int, для питона True == 1. Их хэши тоже равны. Вместо создания нового ключа, обновляется значение старого: словарь становится {True: "no"}. 3️⃣Затем идёт ключ 1.0. Значение 1.0 == 1 == True. Снова происходит перезапись значения по существующему ключу. 4️⃣Итоговый словарь выглядит так: {True: "maybe"}. Его длина равна 1. 5️⃣При обращении d[True] мы получаем последнее сохранённое значение — "maybe". Почему это важно
Задачка наглядно демонстрирует устройство хэш-таблиц (словарей и множеств) под капотом. Ключи считаются одинаковыми не по совпадению типов, а если их хэши равны (hash(a) == hash(b)) и сами объекты равны (a == b). Это нужно помнить при смешивании разных числовых типов в ключах.