检查一个数组的元素是否包含在另一个数组中。

4

**

labels = ['UNREAD', 'CATEGORY_PERSONAL', 'INBOX']
incomingLabels = ['UNREAD','IMPORTANT' 'CATEGORY_PERSONAL', 'INBOX']

labels array 是静态数组。如何检查 incoming array 是否包含 labels array 中的所有元素。

我的尝试

intersectionOfTwoArrays = list(set(incomingLabels) & set(labels))
if np.array_equal(labels, intersectionOfTwoArrays): 
   //Do somthing 

尝试失败是因为intersectionOfTwoArrayslabels数组的顺序不一致。

有人能帮我解决这个问题吗?


“not ordered same as labels array” 是什么意思? - Padraic Cunningham
标签 = ['未读', '个人分类', '收件箱'] 两个数组的交集 = ['未读', '收件箱', '个人分类'],因此如果条件不满足,则失败。 - Januka samaranyake
我仍然不明白你的意思,订单与你所尝试做的事情有什么关系? - Padraic Cunningham
检查数组是否相等 - Januka samaranyake
你是指 set(incomingLabels) >= set(labels) 吗? array_equal 是逐元素进行比较的。 你是否真的在使用numpy数组? - Padraic Cunningham
1个回答

12

在进行array_equal比较之前,将两个列表转换为集合以避免顺序问题。

labels = ['UNREAD', 'CATEGORY_PERSONAL', 'INBOX']
incomingLabels = ['UNREAD','IMPORTANT', 'CATEGORY_PERSONAL', 'INBOX']
intersectionOfTwoArrays = list(set(incomingLabels) & set(labels))

if np.array_equal(set(labels), set(intersectionOfTwoArrays)): 
    # Do somthing 
    print "match"

或者,您可以使用set方法issubset。

labels = ['UNREAD', 'CATEGORY_PERSONAL', 'INBOX']
incomingLabels = ['UNREAD','IMPORTANT', 'CATEGORY_PERSONAL', 'INBOX']

if set(labels).issubset(set(incomingLabels)):
    # issubset true, do something
    print "match"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接