在python中组合两个巨大的元组列表的最快方法

时间:2016-11-08 17:38:24

标签: python performance list

我有两个这样的列表:

L1 = [(1, 'a'), (2, 'm'), (3, 'd') ....] 
L2 = [('b', 1), ('f', 2), ('x', 1), ('w', 3), ('j', 2) ... ]

我想制作:

L3 = [('a','b'),('m','f'),('a','x'),('d','w'),('m','j'), ...]

我的意思是,列表L1的元组中的第二个元素与列表L2的元组中的第一个元素匹配。

L1和L2超过1,200万元组。

我有一个代码可以使用嵌套循环来比较每个元组的'keys',但效率很低。

以更快的方式做什么可能是一个很好的选择?

提前谢谢。

1 个答案:

答案 0 :(得分:5)

字典具有O(1)选择/插入复杂性。使用它们:

L1_dict = dict(L1)
L3 = [(L1_dict[k], v) for v, k in L2 if k in L1_dict]