为什么" {1:' a',True:' b',1.0:' c',1.00:' d' }"评估为" {1:' d'}"?

时间:2017-11-18 03:51:37

标签: python python-3.x dictionary expression

当我在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'。我不明白这个字典评估是如何运作的。

3 个答案:

答案 0 :(得分:3)

Python使用==运算符使用的相同的相等性测试。您使用的所有密钥(1True1.01.00)相互比较均等。你的dicts发生的事情是保留第一个密钥,然后更新与该密钥相关的值,以便比较等同于它的所有后续密钥。这有点不直观,因为键值不相同(1.01.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将丢弃除最后一个键值之外的所有键值。