我想在保持顺序并且不允许重复的同时合并两个列表。
list1 = [4, 5, 2, 6]
list2 = [4, 1, 2, 9, 6]
output -> [4, 5, 2, 6, 1, 9]
我尝试过的是list(set(list1) | set(list2))
,但这不能保持顺序。有没有办法通过列表理解做到这一点?
答案 0 :(得分:5)
您可以使用dict.fromkeys
方法:
list(dict.fromkeys(list1 + list2))
如果您使用的是Python 3.6或更早版本,则可以使用collections.OrderedDict
代替dict
。
答案 1 :(得分:2)
list1 = [4, 5, 2, 6]
list2 = [4, 1, 2, 9, 6]
list3 = [item for item in list2 if item not in list1]
list1 += list3
比使用集合更具可读性
答案 2 :(得分:1)
您可以对 O(n)解决方案执行以下操作:
list1 = [4, 5, 2, 6]
list2 = [4, 1, 2, 9, 6]
s1 = set(list1)
result = list1 + [e for e in list2 if e not in s1]
print(result)
输出
[4, 5, 2, 6, 1, 9]