True和1和1.0在python词典中的评估结果相同

问题描述

所述hash的3个项目的1, 1.0, True是相同的(它等于1)。如果没有冲突,这就是python用作字典键的原因。而且1 == 1.0 == TrueTrue没有碰撞。

这里是有关python字典的旧实现的更多详细信息。新的实现按照这些原则行事(但保留顺序)。

解决方法

谁能解释python字典的这种行为?

d = {}
d[True] = 'Magic'
d[1] = 'Cool'
d[1.0] = 'Hello'
print(d)

# {True: 'Hello'}

为什么不打印所有其他(键,值)对?

为什么将True,1和1.0评估为相同?