假设我们有两个列表,其中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))
答案 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)]