gpt4 book ai didi

python - 字典强制有意还是无意?

转载 作者:太空狗 更新时间:2023-10-29 20:15:49 26 4
gpt4 key购买 nike

如果我写:

d = { 0:'a', 1:'b' }
d[False] = 'c'
d[True] = 'd'
print(d)

我得到:

{ 0:'c', 1:'d' }

为什么要将它们强制转换为整数?它以相反的方式做同样的事情。

d = {False:'a', True:'b'}
d[0] = 'c'
d[1] = 'd'
print(d)

输出是:

{False:'c', True: 'd'}

这可以禁用吗?是错误吗?

最佳答案

这是因为这些值被认为是相等的:

>>> True == 1
True
>>>
>>> False == 0
True

并且具有相同的哈希值:

>>> hash(True), hash(1)
(1, 1)
>>>
>>> hash(False), hash(0)
(0, 0)

因此,从字典的角度来看,True1False0 是无法区分的.

没有办法“禁用”此功能——您一开始就不应该在字典中使用非同类键。

在这种特定情况下,一个潜在的解决方法是为 TrueFalse 保留特殊的 int 值,而不是 10 ,分别(假设您需要 10 作为独立的键)。例如,您可以让 -1 代表 True,让 -2 代表 False

关于python - 字典强制有意还是无意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com