从scala中映射的值计算平均值

从scala中映射的值计算平均值,scala,hashmap,Scala,Hashmap,我有一张地图,代表一本成绩册,其中关键是成绩,值是达到该成绩的学生人数 我的地图如下所示: grades = Map("1" -> 0, "2" -> 0, "3" -> 0, "4" -> 0, "5" -> 0) 然后我从学生的分数列表中读取键的值,用值填充0 我现在要做的是计算平均分数: val avg = grades.foreach{case (k,v) => k * v} / grades.foldLeft(0)(_+_._2) 但问题是 gr

我有一张地图,代表一本成绩册,其中关键是成绩,值是达到该成绩的学生人数

我的地图如下所示:

grades = Map("1" -> 0, "2" -> 0, "3" -> 0, "4" -> 0, "5" -> 0)
然后我从学生的分数列表中读取键的值,用值填充0

我现在要做的是计算平均分数:

val avg = grades.foreach{case (k,v) => k * v} / grades.foldLeft(0)(_+_._2)
但问题是

grades.foreach{case (k,v) => k * v}
仅返回
()

try:(还有其他方法可以做到这一点-我试图坚持您原来的流程)

我对代码的修改: 1.使用map而不是foreach 2.将k转换为整数
3.除以float得到float答案

很高兴能提供帮助。请考虑接受我的答案:<代码>等级。FordDeLee(0)(+ +2 .2)<代码> > >代码>等级。值。
val avg =  grades.map{case (k,v) => k.toInt * v}.sum 
         / grades.foldLeft(0)(_+_._2).toFloat