当我在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'
。我不明白这本字典评估是如何工作的。为什么“{1:'a',True:'b',1.0:'c',1.00:'d'}”评估为“{1:'d'}”?
0
A
回答
3
Python使用与==
运算符使用的相同的相等性测试。您使用的所有密钥(1
,True
,1.0
和1.00
)的比较结果均相等。你的字典发生了什么,它保留了第一个关键字,然后更新与该关键字相关的值,以便所有随后的关键字与其相等。这有点不直观,因为关键值不一样(除了1.0
和1.00
),但它们是“相等的”。
类似地,{1: 'd'}[True]
的计算结果为'd'
,因为True == 1
。
+0
哦,谢谢!当我向我的字典中添加混合值时,我非常困惑,因为我解析了一个csv文件。我把它归结为'{1:'a',真:'b',1.0:'c',1.00:'d'}'。 –
1
所有值1,True,1.0和1.00是相等的(1.0和1.00是完全相同的值)。所以他们都被认为是字典中的同一个关键。你不能有一个与多个相同的密钥字典。
1
Python不支持字典中的重复键。
在该示例中,所有密钥都相同(True==1
评估为True
)。
所以Python会放弃除最后一个键外的每个键值。
相关问题
- 1. 为什么`a == b或c或d`总是评估为True?
- 2. 什么是gsub(/(\ d {4})\ /(\ d \ d)\ /(\ d \ d)\ /(。*)/,'\ 1- \ 2- \ 3- \ ) 意思?
- 3. Common Lisp为什么(列表+ 1 2)评估为('(+ 1 2)1 2)
- 4. “$ K2ko {$ D} {$ C} = 1”在perl中做什么?
- 5. 为什么表达式(0 == 0&1 == 1)评估为False?
- 6. 在Ruby中,为什么nil [1] = 1评估为零?
- 7. 为什么1 [1]评估为在javascript中未定义?
- 8. 为什么“(奇数和1)= 1”评估为真?
- 9. 为什么-1/2在C++中评估为0,但在Python中为-1?
- 10. 为什么a =评估为零?
- 11. 什么是2 + 1-D时空视频?
- 12. 什么是stringWithFormat:@“%1 $ @%2 $ d”呢?
- 13. 这个正则表达式应该做什么?^[\ d \ d {1,} $
- 14. {a,b,c,d,e} a,b-> c,a,b-> d和d-> e的最高范式是什么?
- 15. 优化循环。更快的ResultList.append([c,d,c [1]/d [1]])?阵列?地图?
- 16. 在Javascript中,为什么[1,2] == [1,2]或({a:1})==({a:1})为false?
- 17. 使用MsgBox(d)和Console.WriteLine(d)时,双舍入为1
- 18. scipy.sparse.hstack(([1],[2])) - >“ValueError:blocks must be 2-D”。为什么?
- 19. NumPy - 将数组重塑为1-D
- 20. 为什么评估“(Double.MinValue + 1)> Double.MinValue”为false?
- 21. 为什么“(1/6)*(66.900009-62.852596)”评估为零?
- 22. 为什么[1] .append(2)评估为None而不是[1,2]?
- 23. 为什么`to_unsigned(0,4)> = -1`在运行时评估为`FALSE`?
- 24. 为什么+和*分别评估为0和1?
- 25. 为什么$((true == false))在bash中评估为1?
- 26. 1-d指针2-d阵列
- 27. 如果char c = 0x80,为什么printf(“%d \ n”,c << 1)输出-256?
- 28. 为什么流水作业对于(a + b)+(c + d)比对a + b + c + d更好?
- 29. 为什么\ d \ +或\ d +在这里不等于\ d *?
- 30. 从(n)D阵列中选择n-1个(n-1)D阵列
字典的键必须是唯一的,如果您使用相同的键只有最后一个将保留。 – eyllanesc