首页 > 解决方案 > 在两个字典中查找浮点数范围的差异

问题描述

我有两个字典,我想比较并找到两者之间的不同值。这是一个例子。

dict1={"sex":["Male","Female"],"age":[range(0,100)]}
dict2={"sex":["male","female","Male","Female"],"age":[-10,0.75,2.,2.5,3.5,30.5,0.1167,nan]}

我知道我可以通过这样做找到两者之间的差异。

[In]: set(dict2["sex"])-set(dict1["sex"])
[Out]: {'female','male'}

但是,当我比较年龄时,我没有看到预期的结果。我希望它只返回负值和 nan 值。

我尝试使用 numpy 以这种方式创建字典,但它返回一个错误,说 unhashable type:'numpy.ndarray'

dict1={"sex":["Male","Female"],"age":[np.arange(0,100,0.1)]}
dict2={"sex":["male","female","Male","Female"],"age":[-10,0.75,2.,2.5,3.5,30.5,0.1167,nan]}

[In]: set(dict2["age"])-set(dict1["age"])

[Out]: TypeError: unhashable type: 'numpy.ndarray'


我的问题是,如何在 dict1 中编写年龄范围,以便它可以表示从 0 到 100 的任何正浮点数,并且只从 dict 2 返回负值和 nan?谢谢你。

标签: pythonnumpy

解决方案


改变这个

dict1={"sex":["Male","Female"],"age":[np.arange(0,100,0.1)]}

dict1={"sex":["Male","Female"],"age":list(np.arange(0,100,0.1))}
#or simply don't put it in list as np.arange itself return an array
dict1={"sex":["Male","Female"],"age":np.arange(0,100,0.1)}

现在输出是:

>>> set(dict2["age"])-set(dict1["age"])
{0.75, nan, -10, 0.1167}

推荐阅读