【发布时间】:2016-03-09 01:23:47
【问题描述】:
我有两个列表,我需要将匹配的项目作为集合获取。
list1 = [1,2,3]
list2 = [1,2,3,4]
a = [(x, y) for x in list1 if x in [y for y in list2]]
它正确获取 X,但正如预期的那样,它只给出嵌套列表 (y) 中的第一项,而不是匹配项。
完成这项工作并获得匹配的 X 和 Y 的最简单方法是什么?有什么方法可以避免使用正则表达式?
更新:为了更清楚,上面只是示例 - 实际代码是:
list1 = [(x, y) for x in new_ids if x.KWuser in [y.keyword for y in get_existing_KeyO]]
new_ids 和 get_existing_KeyO 是来自 2 个不同模型的项目列表:
get_existing_KeyO = list(KeyO.objects.filter(
keyword__in=[x['keyword'] for x in related_data]).all())
【问题讨论】:
-
你的意思是两个列表之间的共同元素?
-
if x in [y for y in list2]与if x in list2相同,但速度较慢。这是一个侧面评论,你的问题没有意义 - 如果它们都是......为什么你想要这对......相同的价值?为什么不[(x, x) for x in list1 if x in list2]?如果你想要不同的值,那么听起来你想要一个键/值匹配 - 和一个字典,而不是两个列表。 -
set(list1).intersection(list2)? -
我更新了原来的问题。
标签: python