总结Python列表中的元素

问题描述 投票:0回答:1

我有以下种类的列表:

myList = [[500, 5], [500, 10], [500, 3], [504, 9], [505, 10], [505, 20]]

我不想拥有与第一个元素相同的值,所以我想这样做:如果两个或多个元素具有相同的第一个值,则将具有相同第一个值的元素的所有第二个值相加,然后删除重复,因此在我的示例中,新的输出将是:

myList = [[500, 18], [504, 9], [505, 30]]

我该怎么做?我当时在考虑使用Lambda函数,但我不知道如何创建该函数。我正在考虑的其他解决方案需要大量的for循环,所以我在考虑是否有更简单的方法可以做到这一点。任何帮助表示赞赏!

python python-3.x
1个回答
2
投票

使用dict

import collections

myDict = collections.defaultdict(lambda: 0)

for key, value in myList:
    myDict[key] += value

# transform back to list of lists
myResult = sorted([list(kv) for kv in myDict.items()])
© www.soinside.com 2019 - 2024. All rights reserved.