为什么在python字典中添加多个'nan'给出多个条目?

dur*_*joy 6 python dictionary

示例问题:

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}.

Ofe*_*dan 0

正如在给您的评论中提到的,nan永远不会“等于”另一个nan,您是否dict正在为其编写一个新密钥。这是大多数语言中值的行为nan,而不仅仅是 Python。

我建议根本不要使用它作为密钥,或者至少解释一下它的目的,这样我们就可以找到更好的方法来实现该目的,而不会陷入这样的陷阱。

对于您的情况,您可以自己测试此行为:

a=list(dc.keys())
print(a[0]==a[1]) # will output False
Run Code Online (Sandbox Code Playgroud)

上述代码 ( ) 的输出False意味着对于系统来说,它们实际上是不冲突的不同键