问题描述
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']]