obj = {True: 1, 1: 2, 1.0: 3, "1": 4}

True, 1 и 1.0 равны и имеют одинаковый хеш, поэтому занимают одну запись словаря. Последнее присваивание ставит значение 3; строка '1' остаётся отдельным ключом.

Короткий ответ

Что ответить на собеседовании

True, 1 и 1.0 равны и имеют одинаковый хеш, поэтому занимают одну запись словаря. Последнее присваивание ставит значение 3; строка '1' остаётся отдельным ключом.

Подробный разбор

Ответ с пояснениями

Условие

obj = {True: 1, 1: 2, 1.0: 3, "1": 4}

print(obj) # {True: 3, "1": 4}

Ответ

True, 1 и 1.0 равны и имеют одинаковый хеш, поэтому занимают одну запись словаря. Последнее присваивание ставит значение 3; строка '1' остаётся отдельным ключом.

В обычном Python результат отображается как {True: 3, '1': 4}: первый объект ключа сохраняется, последующие равные ключи обновляют его значение. В словаре всего две записи. Это не коллизия, требующая отдельного хранения, поскольку ключи ещё и равны. Если нужно различать логическое, целое и вещественное значения, используйте составной ключ с явным типом или другим тегом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее