2011-04-15 58 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