首页 > 解决方案 > 合并和添加嵌套列表

问题描述

现在我有一个嵌套列表,我需要一个函数来创建一个新列表,如果它们相同,则组合元素 0 和元素 1。如果它们相同,它还会将第三个元素添加在一起。

样本输入:

input_list = [['123', '6', '2'], ['123','4','55'], ['123','6','3']

预期输出:

output_list = [['123','6','5'], ['123','4','55']]

123 和 6 是相同的,所以它结合起来,然后 2+3=5

123,4,55 没有任何重复,所以它保持不变

提前谢谢你

标签: pythonnested-lists

解决方案


对于这个问题,因为内部列表中位置 0 和 1 的元素需要相同,才能将第三个值相加然后显示结果,所以只需对前两个值进行哈希处理,如果出现一些重复,那么添加该哈希对的值。

在 python dict 中提供了这个特性,所以你可以这样实现它

input_list = [['123', '6', '2'], ['123','4','55'], ['123','6','3']]

res = {}

for i in input_list:
    if (i[0], i[1]) not in res:
        res.update({(i[0], i[1]):int(i[2])})
    else:
        res[(i[0],i[1])]+=int(i[2])

output_list = [[k[0],k[1], str(v)] for k,v in res.items()]

print(output_list)

输出

[['123', '6', '5'], ['123', '4', '55']]

推荐阅读