将两个元组列表合并为一个

时间:2017-11-08 15:07:39

标签: python

假设我们有两个列表,其中list1包含初始值,列表2包含要在第一个列表中更新的所有值:

list1 = [('a', 0), ('b', 0), ('c', 0)]
list2 = [('a', 5), ('c', 3)]

所需的结果是一个合并的list3,其中list2值插入到list1值中,使用第一个元素作为索引:

list3 = [('a', 5), ('b', 0), ('c', 3)]

我尝试运行以下代码但未成功:

list3 = list1 + list2 
list3 = list(zip(list1, list2)) 

2 个答案:

答案 0 :(得分:4)

您可以使用collections.defaultdict

from collections import defaultdict
list1 = [('a', 0), ('b', 0), ('c', 0)]
list2 = [('a', 5), ('c', 3)]
d = defaultdict(list)
for a, b in list1+list2:
   d[a].append(b)

final_data = sorted([(a, max(b)) for a, b in d.items()], key=lambda x:x[0])

输出:

[('a', 5), ('b', 0), ('c', 3)]

答案 1 :(得分:3)

通过使用dict,你可以像这样实现它:

list1 = [('a', 0), ('b', 0), ('c', 0)]
list2 = [('a', 5), ('c', 3)]
d1 = dict(list1)
d1.update(dict(list2))
list(d1.items())
>>> [('a', 5), ('b', 0), ('c', 3)]