python - 将嵌套数组与字典值进行比较
问题描述
我有一个看起来像这样的数组:
[[ 36 119]
[ 36 148]
[ 36 179]
[ 67 209]
[ 69 84]
[ 96 240]]
和这样的字典:
{84: [36, 119], 85: [36, 148], 86: [36, 160]}
我想检查字典中是否存在数组的任何值,然后返回数字。因此,对于上面的示例,它应该返回 84、85。我尝试使用以下方法进行比较:
pairs = zip(array, dict)
print(any(x != y for x, y in pairs))
虽然我得到一个错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
解决方案
您可以使用np.isin
和np.ndarray.all
:
>>> pairs = {84: [36, 119], 85: [36, 148], 86: [36, 160]}
>>> array
array([[ 36, 119],
[ 36, 148],
[ 36, 179],
[ 67, 209],
[ 69, 84],
[ 96, 240]])
>>> [k for k, v in pairs.items() if np.isin(v, array).all()]
[84, 85]
推荐阅读
- r - 在列表中查找特定元素
- d3.js - 使用矩形选择可缩放map.in D3顶部的节点
- ios - Xcode 12 和迦太基地狱
- javascript - 如何运行一个独特的函数来计算和替换数据库中的空值?
- java - 如何防止 Java 中的堆检查问题
- c - 如何将带有机器代码的文件存储到数组中
- json - 当路径正确时,OPENJSON() SQL SERVER 返回 null
- django - Django + Cython 在 django 应用程序视图中导入 cython 模块
- react-native - 使用 FlatList 中项目的索引/键反应 Native TouchableOpacity onPress
- javascript - JQuery 拒绝执行内联脚本,因为它违反了 Chrome 扩展上的以下内容安全策略指令