2013-06-27 57 views
0

我有一個嵌套的列表如條目內:蟒蛇:確定一個列表的所有條目是一個嵌套列表

>>l = [[['bcsA', 'F'], ['bcsB', 'F'], ['bcsC', 'R']], [['bcsE', 'R'], ['bcsF', 'R']]] 
>>n = [['GROUP A'], [[['bcsQ', 'F'], ['bcsA', 'F'], ['bcsB', 'F'], ['bcsZ', 'F'], ['bcsC', 'F']], [['yhjK', 'R']], [['yhjK', 'F']], [['bcsC', 'R'], ['bcsZ', 'R'], ['bcsB', 'R'], ['bcsA', 'R'], ['bcsQ', 'R']], [['bcsC', 'F'], ['bcsZ', 'F'], ['bcsB', 'F'], ['bcsA', 'F'], ['bcsQ', 'F']]]], 
     [[['GROUP A'], [[['bcsA', 'F'], ['bcsB', 'F'], ['bcsC', 'R']], [['bcsE', 'R'], ['bcsF', 'R']], [['yhjK', 'F']]]], 

所以我希望做的是,如果嵌套列表[['bcsA', 'F'], ['bcsB', 'F'], ['bcsC', 'R']][['bcsE', 'R'], ['bcsF', 'R']]是在其他嵌套列表中找到相同的列表,那麼它會給我第一個條目。

輸出將希望是GROUP B

這個列表l在我每次瀏覽該程序時都會有所不同。

我已經嘗試了一堆的變化:

>>>for x in n: 
>>> if all(e in x for e in l): 
>>>   print n[n.index(x)][0] 

,我認爲它是什麼做的是,如果在l嵌套列表中的各個項目都在n的任何地方,然後它會給我說,他們是在組A,但真的輸出應該是GROUP B 我已經嘗試過,沒有all()聲明。我覺得這是一件簡單的事情,但我無法弄清楚。我希望這是有道理的。感謝您的任何幫助!

tl; dr: 如何判斷列表中的所有值是否都包含在嵌套列表中,如果是,則打印嵌套列表的第一個條目。

+0

你爲什麼要在這裏使用括號'如果[所有(E x中的e in l)]'?我的意思是爲什麼不是所有的(e在l中爲x) – oleg

+0

@Binnie,你能正確地格式化你的代碼嗎? – Oz123

+0

@Binnie,你可以讓你的例子更短,更容易閱讀? – oleg

回答

0

我認爲一個人應該記住,無論bool([False]) == Truebool([True]) == True所以施工時[any(...)]:使用任何一個能告訴是肯定的,這種說法將是True