python - 查找字典中特定值的平均值

标签 python dictionary average

我有一本看起来像这样的字典。 。 .

students_marks = {"barry": [20,25,30], "fred": [12,14,16], "sarah": [32,30,28]

等等,我可以向字典中添加更多带有值的键。 这些值是每个作业的分数

我正在尝试获取第一个作业中所有学生的平均值 例如。巴里 - 20、弗雷德 - 12、莎拉 - 32

这是我到目前为止的代码

students_marks = {"barry": [20,25,30], "fred": [12,14,16], "sarah": [32,30,28]}

def get_below_average_df_report_marks_report():
    sum(float(x[0] for x in students_marks.values())/len(students_marks))

我收到错误:TypeError:float() 参数必须是字符串或数字,而不是“生成器”

最佳答案

问题是您在计算总和之前尝试转换为 float,它应该是 float(sum... 而不是 sum(float... .

>>> float(sum(x[0] for x in students_marks.values()))/len(students_marks)
21.333333333333332

就可读性而言,我更喜欢这个解决方案:

>>> from operator import itemgetter
>>> first_score = itemgetter(0)
>>> num_students = float(len(students_marks))
>>> sum(map(first_score, students_marks.values()))/num_students
21.333333333333332

如果您更喜欢没有 import 语句的解决方案,则此解决方案是等效的:

>>> first_score = lambda scores: scores[0]
>>> num_students = float(len(students_marks))
>>> sum(map(first_score, students_marks.values()))/num_students
21.333333333333332

请注意,如果您使用的是 Python 3,则无需强制转换为 float,因为 / 运算符已默认执行浮点除法。

关于python - 查找字典中特定值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821225/

相关文章:

python - 如何解压列表字典(字典!)并作为分组元组返回?

java - 如何使用 do 循环查找数组列表中 double 值的平均值?

Python 循环中的星号

python - Django rest框架ListApiView慢查询

python ssh 密码提示

python - 字典多处理

python - ValueError - 将图像数组输入字典

MySQL:平均 OF 子查询(不在 FROM/GROUP BY 中)

python - 打印tensorflow 2.0损失函数的所有项