擅长:python、mysql、java
<p>使用itertools中groupby的另一种方法</p>
<pre><code>from itertools import groupby
scores_raw = [
{'E-mail': 'tim@gmail.com', 'score': 10},
{'E-mail': 'tim@gmail.com', 'score': 10},
{'E-mail': 'tim@gmail.com', 'score': 10},
{'E-mail': 'tim@gmail.com', 'score': 10},
{'E-mail': 'hihallo@gmail.com', 'score': 5},
{'E-mail': 'noreply@com', 'score': 5},
{'E-mail': 'marketing@nl', 'score': 5}
]
scores_unique=[]
for _key, _items in groupby(sorted(scores_raw),key=lambda x: x['E-mail']):
scores_unique.append({
'E-mail':_key,
'score':sum(item['score'] for item in _items)
})
print (scores_unique)
</code></pre>
<p>结果:</p>
<pre><code>[{'E-mail': 'hihallo@gmail.com', 'score': 5}, {'E-mail': 'marketing@nl', 'score': 5}, {'E-mail': 'noreply@com', 'score': 5}, {'E-mail': 'tim@gmail.com', 'score': 40}]
</code></pre>