示例问题:
import numpy as np
dc = dict()
dc[np.float('nan')] = 100
dc[np.float('nan')] = 200
Run Code Online (Sandbox Code Playgroud)
它创造了多个条目nan像
dc.keys()会产生,{nan: 100, nan: 200}但它应该创造{nan: 200}.
正如在给您的评论中提到的,nan永远不会“等于”另一个nan,您是否dict正在为其编写一个新密钥。这是大多数语言中值的行为nan,而不仅仅是 Python。
我建议根本不要使用它作为密钥,或者至少解释一下它的目的,这样我们就可以找到更好的方法来实现该目的,而不会陷入这样的陷阱。
对于您的情况,您可以自己测试此行为:
a=list(dc.keys())
print(a[0]==a[1]) # will output False
Run Code Online (Sandbox Code Playgroud)
上述代码 ( ) 的输出False意味着对于系统来说,它们实际上是不冲突的不同键