Для словаря Python должно быть нечто большее, чем поиск по таблице в hash (). Путем грубого эксперимента я нашел это столкновение хешей :
>>> hash(1.1)
2040142438
>>> hash(4504.1)
2040142438
И все же это не сломает словарь:
>>> d = { 1.1: 'a', 4504.1: 'b' }
>>> d[1.1]
'a'
>>> d[4504.1]
'b'
Проверка работоспособности:
>>> for k,v in d.items(): print(hash(k))
2040142438
2040142438
Возможно, есть еще один уровень поиска, кроме hash (), который позволяет избежать коллизий между ключами словаря. Или, возможно, dict () использует другой хеш.
(Кстати, это в Python 2.7.10. Та же история в Python 3.4.3 и 3.5.0 со столкновением в hash(1.1) == hash(214748749.8)
.)