我有两个列表:
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 中 a 和 b 之间的公共(public)元素(即列表 a 中的苹果和芒果)。
- 对于条目数,例如苹果在列表a中,我想添加整个
[ 'apple','0','1','1','3']
到列表 b。如果列表 a 中有 2 个苹果条目,那么我想在 b 中添加两个['apple',...]
block 。列表应类似于 :b=[[ 'apple ','0','1','1','3'],['苹果','0','1','1','3'],['芒果','0', '1','0','3']]
有没有更简单的方法来做到这一点?
最佳答案
对于 1,最好是使用 set():
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
关于Python如何在列表中进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5678927/