首页 > 解决方案 > 将嵌套数组与字典值进行比较

问题描述

我有一个看起来像这样的数组:

[[ 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()

标签: pythonarraysnumpydictionary

解决方案


您可以使用np.isinnp.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]

推荐阅读