列表的交集返回列表中的所有列表

问题描述

List1 = [['A0.01','GENERIC NOTES'],['A0.02','ANOTHER GENERIC NOTE'],['A0.03','YET ANOTHER GENERIC NOTE']]
List2 = ['A0.01','A0.03']

,我想找到两个列表的交集,如果有匹配项,则返回所有项目的列表。下面是我尝试过的:

result = [[j for j in view if j in List2] for view in List1]

这将返回列表1中的匹配值

[['A0.01'],[],['A0.03']]

,但我也希望该匹配列表项中的其余值。以下是我预期的结果:

['A0.01','YET ANOTHER GENERIC NOTE']

如何实现这一目标。感谢您的帮助!

解决方法

我敢肯定有很多方法可以做到这一点。

这里是一个

>>> matches = set(item[0] for item in List1).intersection(List2)
>>> matches
{'A0.03','A0.01'}
>>> [item for item in List1 if item[0] in matches]
[['A0.01','GENERIC NOTES'],['A0.03','YET ANOTHER GENERIC NOTE']]