True和1和1.0在python词典中评估为相同

时间:2018-09-19 09:07:09

标签: python dictionary boolean

有人可以解释python词典的这种行为吗?

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

# {True: 'Hello'}

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

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

1 个答案:

答案 0 :(得分:3)

3个项目1, 1.0, True中的hash是相同的(等于1)。如果没有冲突,这就是python用作字典键的方式。并且1 == 1.0 == True也是True,因此没有冲突。

这是有关python字典old implementation的更多详细信息。新的实现沿这些方向执行(但保留了顺序)。