Как Python обрабатывает дублирующиеся ключи в словаре

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

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

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

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

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

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

Условие

Определите, какое значение будет выведено при печати словаря, в котором присутствуют ключи, считающиеся одинаковыми по правилам сравнения.


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

Ответ

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

При создании словаря пары обрабатываются слева направо. Первый ключ 1 создаёт запись. Следующие ключи не создают новые записи, а обновляют значение существующего равного ключа.

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

В данном словаре сохраняется первый объект ключа, поэтому отображается 1. Если различие типов имеет смысл для задачи, используйте составные ключи (type(value), value).

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

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

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

Подробнее