当我在Python shell中输入表达式{1: 'a', True: 'b', 1.0: 'c', 1.00: 'd'}
时,我会回到{1: 'd'}
。但是当我写{1: 'a', True: 'b', 1.0: 'c', 1.00: 'd'} [True]
时,解释器会返回'd'
。我不明白这个字典评估是如何运作的。
答案 0 :(得分:3)
Python使用==
运算符使用的相同的相等性测试。您使用的所有密钥(1
,True
,1.0
和1.00
)相互比较均等。你的dicts发生的事情是保留第一个密钥,然后更新与该密钥相关的值,以便比较等同于它的所有后续密钥。这有点不直观,因为键值不相同(1.0
和1.00
除外),但它们是“相等的”。
同样,{1: 'd'}[True]
评估为'd'
因为True == 1
。
答案 1 :(得分:1)
所有值1,True,1.0和1.00相等(1.0和1.00是完全相同的值)。所以它们都被认为是字典中的相同键。你不能拥有一个带有多个相等键的字典。
答案 2 :(得分:1)
Python不支持字典中的重复键。
在示例中,所有键都相同(True==1
计算为True
)
因此Python将丢弃除最后一个键值之外的所有键值。