<p>解决这个问题的一种方法是将它重组为一个列表字典。像这样的</p>
<pre><code>list_of_dicts = [{"name": "thisisname1", "filebytestotal": 334632,"memorybytes": 5467234},
{"name": "thisisname2", "filebytestotal": 2351, "memorybytes": 324523},
{"name": "thisisname3", "filebytestotal": 2314651, "memorybytes": 2235},
{"name": "thisisname1", "filebytestotal": 13432, "memorybytes": 546534},
{"name": "thisisname1", "filebytestotal": 32342, "memorybytes": 341234}]
# reshape
from collections import defaultdict
dict_of_lists = defaultdict(list)
for obj in list_of_dicts:
dict_of_lists[obj['name']].append({
'bytestotal': obj['filebytestotal'],
'memorybytes': obj['memorybytes'],
})
dict_of_lists
> {'thisisname1': [{'bytestotal': 334632, 'memorybytes': 5467234}, ...], ...}
# and now calculate your averages
for key, totals_list in dict_of_lists.items():
bytes_total = [obj['bytestotal'] for obj in totals_list]
bytes_total_avg = sum(bytes_total) / len(bytes_total)
print(key, bytes_total_avg)
# and the same for memory bytes
</code></pre>
<p>这使用<a href="https://docs.python.org/3.7/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">^{<cd1>}</a>,它用默认值填充任何空键。你可以用内置字典来写,但这样可以省下几行</p>