如何计算二维python列表中相似元素的总和?

时间:2018-07-30 17:34:41

标签: python

我有这样的二维列表

array = [['product_1',1500],['product_2',2500],['product_3',4500],['product 1',1000],['product 2',3000],['product 3',1200]]

我需要获取的是按最大和排序的python 2d列表,例如

#arr = [[product_3,5700],[product_2,5500],[product_1,2500]]

这是我尝试过的

arr = []
i=0
for item in array:
    if item[0] not in arr:
        item[0]=array[i][0]
        item[1]=array[i][1]
        arr.append(item)
        print('array[%d][0]'%i,array[i][0])
        print(arr)

    else:
        item[1]+=item[1]
        print('item[1]',item[1])
    i+=1

,但这只会将所有元素追加到列表中。如何找到列表中每个元素的总和并对它们进行排序?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

from collections import defaultdict

array = [['product_1',1500],['product_2',2500],['product_3',4500],['product 1',1000],['product 2',3000],['product 3',1200]]
array = [[i.replace(' ', '_'), j] for i, j in array]

d = defaultdict(dict)

for x, y in array:
    d[x] += y

output = list(reversed(sorted(d.items(), key=lambda x: x[1])))

输出:

[('product_3', 5700), ('product_2', 5500), ('product_1', 2500)]