从scala中的map中的值计算平均值

时间:2016-05-24 14:12:51

标签: 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)

但问题在于

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

仅返回()

1 个答案:

答案 0 :(得分:3)

尝试:(还有其他方法可以做到这一点 - 我正在努力坚持你的原始流程)

val avg =  grades.map{case (k,v) => k.toInt * v}.sum 
         / grades.foldLeft(0)(_+_._2).toFloat

我对您的代码的更改: 1.使用地图而不是foreach 2.将k转换为整数 3.按浮动除以得到浮动答案