Что покажет словарь с конфликтующими ключами?

Программа выведет {1: 'c'}. Ключи 1, 1.0 и True считаются равными и имеют одинаковый хеш; каждая следующая запись перезаписывает значение существующего ключа.

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

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

Программа выведет {1: 'c'}. Ключи 1, 1.0 и True считаются равными и имеют одинаковый хеш; каждая следующая запись перезаписывает значение существующего ключа.

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

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

Условие

Определите, какой вывод получит программа при выполнении следующего кода, где создаётся словарь с ключами 1, 1.0 и True.

d = {1: 'a', 1.0: 'b', True: 'c'}
print(d)

Ответ

Программа выведет {1: 'c'}. Ключи 1, 1.0 и True считаются равными и имеют одинаковый хеш; каждая следующая запись перезаписывает значение существующего ключа.

Первый ключ 1 сохраняется в словаре. Значение 'a' заменяется сначала на 'b', затем на 'c', поэтому длина словаря равна одному.

print(d[1])     # c
print(d[1.0])   # c
print(d[True])  # c

Это не случайная коллизия хешей: равенство ключей тоже истинно. При одинаковом хеше, но неравных объектах словарь способен хранить отдельные записи. Для различения типов используйте ключи, включающие тип значения.

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

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

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

Подробнее