【问题标题】:Average in Dictionary in PythonPython中字典的平均值
【发布时间】:2017-06-30 09:38:23
【问题描述】:

我正在尝试查找班级的平均数学分数,但我不确定如何在字典中执行此操作。如何使用简单的方法将每个分数相加,然后除以学生人数 (num_students)?

login="teacher"
password="school"

usrnm=input("Please enter your username: ")
pw=input("Please enter your password: ")
if (usrnm==login) and (pw==password):
   print("==Welcome to the Mathematics Score Entry Program==")
   num_students = int(input("Please enter number of students:"))
   print ("you entered ",num_students," students")
   student_info = {}
   student_data = ['Maths Score: ']
   for i in range(0,num_students):
      student_name = input("Name :")
      student_info[student_name] = {}
      for entry in student_data:
        student_info[student_name][entry] = int(input(entry)) 
   print (student_info)
else:
  print("No way, Jose!")

【问题讨论】:

  • 虽然可以算出来。但在您的问题中包含一个您期望数据看起来如何的样本会非常有帮助。
  • 通常最好将输入/输出与逻辑分开。因此,您应该编写一个函数,将字典作为输入并返回平均值,但无需所有交互。
  • 请不要破坏您的帖子。发布问题后,您已将内容授权给整个 Stack Overflow 社区(根据 CC-by-SA 许可)。如果您想取消此帖子与您帐户的关联,请参阅What is the proper route for a disassociation request?

标签: python dictionary average


【解决方案1】:

python 字典有一个.values() 方法,它返回一个字典中的值列表,您可以使用它,例如:

sum(d.values()) / float(len(d))

d.values()给你学生的分数列表,sum(..)给出所有分数的总和,我除以len(d)这是字典的整数长度(即分数的数量)显然平均是总分/分。

你需要浮点数,否则 python 2 将返回一个整数(python 3 在适当的时候给出浮点数)

【讨论】:

  • Python 2 中的另一种方法是为sum 提供初始值,例如:sum(d.values(), 0.0) / len(d)
  • @JonClements 呵呵,从没想过那样做。
  • @JonClements 你会说这更像 Pythonic 吗?我发现float() 的可读性更强。总是有numpy.mean(),虽然这里可能有点矫枉过正......
  • @Chris_Rands 不是特别 - 只是指出...从 Python 3.4 开始,还有类似于 numpy.meanstatistics.mean...
  • 能否解释一下下面的代码:sum(d.values()) / float(len(d))
【解决方案2】:

可以使用sum 函数来计算平均值,如下所示:

average = sum(d['Maths Score: '] for d in student_info.values()) / len(student_info)

请注意,目前您的代码只能包含具有唯一姓名的学生。两个同名的学生会互相覆盖。

【讨论】:

  • 这是我希望实施的扩展活动,但感谢您指出这一点。
【解决方案3】:

如果您使用的是 Python 3.4+,那么您可以使用 statistics.mean:

from statistics import mean
avg_score = mean(d.values())

【讨论】:

  • 感谢您的 cmets。我正在寻找以下输出“平均数学分数是......”
  • @MrFHHH 所以printavg_score 的输出呢?
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
相关资源
最近更新 更多