2016-10-21 2 views
0

**Проверьте один массив элементов содержит в другой массив

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 

, что попытка не succed потому intersectionOfTwoArrays's не заказывали такой же, как labels array

Может кто-нибудь помочь мне на это?

+0

Что вы имеете в виду * не упорядоченный так же, как этикетки массива * ? –

+0

labels = ['UNREAD', 'CATEGORY_PERSONAL', 'INBOX'] intersectionOfTwoArrays = ['UNREAD', 'INBOX', 'CATEGORY_PERSONAL'] из-за этого, если условие не выполнено –

+0

Я до сих пор не знаю, что вы имеете в виду, что делает порядок зависит от того, что вы пытаетесь сделать? –

ответ

1

преобразовать как список в набор, прежде чем делать 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" 

в качестве альтернативы, вы можете, используя набор метод issubset

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

if set(labels).issubset(set(incomingLabels)): 
    # issubset true, do something 
    print "match" 
Смежные вопросы