我想通过前两个标准对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]]
答案 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