您可以使用collections.defaultdict将每个名称的所有分数存储在一个列表中,然后使用statistics.mean(如果python>;=3.4)来计算平均值:from collections import defaultdict
from statistics import mean
l = [['name1', 10.10], ['name2', 12.12], ['name1', 9.90], ['name3', 22.20], ['name3', 7.70]]
details = defaultdict(list)
for name, score in l:
details[name].append(score)
如果要保留dict结构,只需更新值:
^{pr2}$
或者使用列表理解创建列表:print([[name ,mean(scores)] for name,scores in details.items()])
[['name1', 10.0], ['name3', 14.95], ['name2', 12.12]]
很明显,不使用“平均值”,您可以自己简单地计算:print([[name , sum(scores)/len(scores)] for name,scores in details.items()])from collections import OrderedDict
details = OrderedDict()
for name, score in l:
details.setdefault(name,[])
details[name].append(score)
print([[name , sum(scores)/len(scores)] for name,scores in details.items()])