我有这样的二维列表
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
,但这只会将所有元素追加到列表中。如何找到列表中每个元素的总和并对它们进行排序?
答案 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)]