我有一个名字字典,上面有一个数字(一个分数)。该文件的布局如下:
Person A,7
Peron B,6
如果文件中重复了名称,例如人B出现在3行,有3个不同的分数我想计算这些分数的平均值然后将这个结果附加到列表形式的字典中。但是,当我尝试对字典进行排序时,我一直遇到错误。代码如下。
else:
for key in results:
keyValue = results[key]
if len(keyValue) > 1:
# Line below this needs modification
keyValue = list(sum(keyValue)/len(keyValue))
newResults[key] = keyValue
# Error in above code...
else:
newResults[key] = keyValue
print(newResults)
print(sorted(zip(newResults.values(), newResults.keys()), reverse=True))
结果是人员(密钥)及其得分(值)的字典,其中值是列表,以便:
results = {'Bob':[7],'Jane':[8,9]}
答案 0 :(得分:0)
如果您使用的是Python 3.x,则可以使用包含函数statistics
的{{1}}库。现在假设你的dict看起来像:mean
你可以像这样创建一个results = {'Bob': [7], 'Jane': [8, 9]}
字典:
newResults
这被称为dict理解,你可以看到它有点直观。从from statistics import mean
newResults = {key: mean(results[key]) for key in results}
开始,您将告知将要创建dict。然后使用{
来定义其结构。最后,使用key: value
循环迭代将用于创建dict的集合。您可以通过以下方式实现相同目标:
for
你想最后对dict进行排序。不幸的是,这是不可能的。您可以创建一个newResults = {}
for key in results:
newResults[key] = mean(results[key])
,它会记住项目的插入顺序,也可以创建一个列表,其中包含您的dict的排序键。后者看起来像:
OrderedDict