首页 > 解决方案 > 从数组中删除重复项并将值相加 Python

问题描述

我有一个数组,存在于两列中。第一列是一个类别,第二列是一个值。例如下面的一个:

[category1, 12], [category2, 78], [category3, 8], [category2, 53], [category4, 894] 

我正在尝试创建一个数组,其中每个类别只出现一次,并且每个类别的所有值都加起来。

我应该如何开始?

标签: pythonarrayslist

解决方案


您可以使用列表中的值创建defaultdict并更新字典,如下所示:

from collections import defaultdict
l = [['category1', 12], ['category2', 78], ['category3', 8], 
     ['category2', 53], ['category4', 894]]

d = defaultdict(int)
for cat, i in l:
    d[cat] += i

print(d)
defaultdict(int,
            {'category1': 12,
             'category2': 131,
             'category3': 8,
             'category4': 894})

如果你想让它回到一个list

list(map(list, d.items()))
# [['category1', 12], ['category2', 131], ['category3', 8], ['category4', 894]]

推荐阅读