擅长:python、mysql、java
<p>您可以使用dict,使用前三个元素作为键对数据进行分组:</p>
<pre><code>d = {}
for k, b, c, w in l:
if (k, b, c) in d:
d[k, b, c][-1] += float(w)
else:
d[k, b, c] = [k, b, c, float(w)]
from pprint import pprint as pp
pp(list(d.values()))
</code></pre>
<p>输出:</p>
^{pr2}$
<p>如果你想保持第一眼看到的顺序:</p>
<pre><code>from collections import OrderedDict
d = OrderedDict()
for k, b, c, w in l:
if (k, b, c) in d:
d[k, b, c][-1] += float(w)
else:
d[k, b, c] = [k, b, c, float(w)]
from pprint import pprint as pp
pp(list(d.values()))
</code></pre>
<p>输出:</p>
<pre><code>[['1810569', 'a', 5, 3235.04],
['1437437', 'a', 5, 1123.9],
['1437437', 'b', 5, 1232.43],
['1810569', 'b', 5, 1321.31]]
</code></pre>