python - 在两个字典中查找浮点数范围的差异
问题描述
我有两个字典,我想比较并找到两者之间的不同值。这是一个例子。
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?谢谢你。
解决方案
改变这个
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}
推荐阅读
- jmeter - Jmeter-使用时间函数在午夜获取纪元时间戳
- jquery - 如何修复这个无限旋转动画循环的初始延迟?
- ios - JSON 转多维数组
- regex - 替换/替换 shell 脚本中的对抗性子字符串变量
- android - 在同一个活动中实现两个 AsyncTaskLoader
- django - 如何在不破坏 django 数据的情况下将外键从一个模型移动到另一个模型?
- javascript - 侧边栏切换效果正在破坏我的菜单项
- datetime - 将msexcel导入msaccess时如何保持累计小时格式
- php - 带有连接的 Laravel 查询构建器
- php - 使用 AJAX 的 Cordova POST 请求多次写入数据库