在单独的字典中存储字典中的平均值 - Python

时间:2015-03-09 17:44:21

标签: python dictionary

我的字典看起来像这样:

scores = {'Ben': ['10', '9'], 'Alice': ['10', '10'], 'Tom': ['9', '8']}

我已经计算了字典中每个人的平均值,然后我想将平均值存储在单独的字典中。我希望它看起来像这样:

averages = {'Ben': [9.5], 'Alice': [10], 'Tom': [8.5]}

我使用此代码计算了平均值:

for key, values in scores.items(): 
  avg = float(sum([int(i) for i in values])) / len(values)
  print(avg)

这给出了以下输出:

9.5
10.0
8.5

如何在单独的字典中输出平均值,如上所示?

提前致谢。

4 个答案:

答案 0 :(得分:1)

averages = {}    # Create a new empty dictionary to hold the averages
for key, values in scores.items(): 
  averages[key] = float(sum([int(i) for i in values])) / len(values)  
  # Rather than store the averages in a local variable, store them in under the appropriate key in your new dictionary.

答案 1 :(得分:0)

使用dict_comprehension。

>>> scores = {'Ben': ['10', '9'], 'Alice': ['10', '10'], 'Tom': ['9', '8']}
>>> {i:[float(sum(int(x) for x in scores[i]))/len(scores[i])] for i in scores}
{'Ben': [9.5], 'Alice': [10.0], 'Tom': [8.5]}

答案 2 :(得分:0)

您可以使用词典理解来循环您的项目并计算正确的结果:

>>> from __future__ import division
>>> scores = {'Ben': ['10', '9'], 'Alice': ['10', '10'], 'Tom': ['9', '8']}
>>> scores = {k:[sum(map(int,v))/len(v)] for k,v in scores.items()}
>>> scores
{'Ben': [9.5], 'Alice': [10.0], 'Tom': [8.5]}

请注意,您需要使用int函数map将值转换为map(int,v)

答案 3 :(得分:0)

你可以用一行中的词典理解来做到这一点:

averages = {k: sum(float(i) for i in v) / len(v) for k, v in scores.items() if v}