2011-04-15 93 views
1

我有兩個列表:的Python如何翻過列表搜索

a= [['tea','apple',1,1],['coffee','apple',0,1],['cola','mango',1,1],['lemon','banana',0,0]] 
b=[[ 'apple','0','1','1','3'],[ 'ring','0','1','1','3'],[ 'tennis','1','0','0','3'],[ 'mango','0','1','0','3']] 

我試圖找出最好的方式:

  1. 列表項
  2. 查找/搜索的列表a中的a和b之間的共同元素(即列表a中的蘋果和芒果)。
  3. 對於例如蘋果列表中,我想添加整個 [ 'apple','0','1','1','3']列表b。如果列表a中有2個蘋果條目,那麼我想在b中添加兩個['apple',...]塊。列表應該看起來像這樣:b = [['apple','0','1','1',' 3'],['apple','0','1','1','3'],['芒果','0','1','0','3']]

有沒有更簡單的方法來做到這一點?

+2

如何爲 「香蕉」 一個共同的元素? – 2011-04-15 15:28:17

+0

到目前爲止你寫了什麼?另外,對於你的第二個問題,你應該發佈你想要的結果。 – 2011-04-15 15:29:15

回答

2

1,最好是使用設置():

a= [['tea','apple',1,1], 
    ['coffee','apple',0,1], 
    ['cola','mango',1,1], 
    ['lemon','banana',0,0]] 
b=[[ 'apple','0','1','1','3'], 
    [ 'ring','0','1','1','3'], 
    [ 'tennis','1','0','0','3'], 
    [ 'mango','0','1','0','3']] 

a_columns = zip(*a) 
# union 
a_set = set(a_columns[0]) | set(a_columns[1]) 
b_columns = zip(*b) 
b_set = set(b_columns[0]) 
# intersection 
common_names = a_set & b_set 
print common_names