我的字典看起来像这样:
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
如何在单独的字典中输出平均值,如上所示?
提前致谢。
答案 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}