我有两个已经排序的列表,我需要进行左外连接。以下代码可以完成此任务:
left_sorted_list = [1, 2, 3, 4, 5]
right_sorted_list = [[2, 21], [4, 45], [6, 67]]
right_dict = {r[0]: r[1] for r in right_sorted_list}
left_outer_join = [[l, right_dict[l] if l in right_dict.keys() else None]
for l in left_sorted_list]
print(left_outer_join)
[[1, None], [2, 21], [3, None], [4, 45], [5, None]]
然而,我不确定这种方法是否非常高效。是否有更高效的方式利用右侧列表已经排序的事实,而不需要编写循环?
编辑: 我要连接的键在左右两个列表中都是唯一的。
right_dict = dict(right_sorted_list)
也可以起作用... - mgilson[[l, right_dict.get(l)] for l in left_sorted_list]
更加清晰明了。 - mgilson