汇总特定列表值

时间:2017-11-07 18:00:25

标签: python list

我想通过前两个标准对3d列表值进行求和。 从这个列表中获取的最佳方式是什么

a = [['Mercedes', 'AMG', 100],
['Mercedes', 'Cabrio', 200],
['Mercedes', 'AMG', 300],
['Opel', 'Combo', 400],
['Opel', 'MOKKA', 500],
['Opel', 'MOKKA', 600],
['BMW', 'X5', 700]]

这个结果:

result = [['Mercedes', 'AMG', 400],
['Mercedes', 'Cabrio', 200],
['Opel', 'Combo', 400],
['Opel', 'MOKKA', 1100],
['BMW', 'X5', 700]]

2 个答案:

答案 0 :(得分:2)

我将使用OrderedDict执行聚合。

from collections import OrderedDict

d = OrderedDict()
for x, y, z in a:
     d[(x, y)] = d.setdefault((x, y), 0) + z

r = [list(k) + [v] for k, v in d.items()]   
r

[['Mercedes', 'AMG', 400],
 ['Mercedes', 'Cabrio', 200],
 ['Opel', 'Combo', 400],
 ['Opel', 'MOKKA', 1100],
 ['BMW', 'X5', 700]]

答案 1 :(得分:1)

如果您不关心订单,可以采取以下措施:

cudaStreamAddCallback