首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala -地图数据集的平均总距离和平均阶段数

Scala -地图数据集的平均总距离和平均阶段数
EN

Stack Overflow用户
提问于 2020-04-15 21:53:22
回答 1查看 90关注 0票数 0

我对Scala非常陌生,但我想知道是否有人能帮助我。

我有以下格式的数据集:Map[String, List[(Int, String, Float)]]

数据样本:

教育路线(GU),1:草莓大学:0.65f,2:甘蓝市学院-河滨夏令营:1.4F,3:Sims学校:3.9f,4:科学中心:0.7F,5:葡萄大学:2.4f,6:蘑菇图书馆:1.9f,7:水果学院:0.9F,8:皇家蜜瓜养护学院:0.75f,GU:0.6f

我正试图得到所有路线的平均总距离和平均阶段数-我从先前的一次节目单中得到以下信息:

代码语言:javascript
复制
def average(ls:List[Int]):Float = {
  sum(ls)/length(ls)
}

println(average(list1))

我理解这是一个更简单的例子,但任何帮助都将不胜感激。我也曾想过,怎样把价值加起来,然后除以路线数目呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 22:34:14

如果您只想编写一个普通的方法,这可以通过一个迭代来完成。

更新:

代码语言:javascript
复制
def average[T](ls: List[T])(implicit num: Numeric[T]): Float = {
  val (sum, length) =
    ls.foldLeft((0.0f, 0))({ case ((s, l), x) => (num.toFloat(x) + s, 1 + l) })
  sum / length
}

val map = Map[String, List[(Int, String, Float)]](
  "Education Route (GU)" -> List(
    (1, "University Of Strawberry", 0.65f),
    (2, "City Of Cabbage College - Riverside Camp", 1.4f),
    (3, "School of Sims", 3.9f),
    (4, "Science Centre", 0.7f),
    (5, "University of Grapes", 2.4f),
    (6, "The Mushroom Library", 1.9f),
    (7, "School Of Fruit", 0.9f),
    (8, "Royal Conservatoire Of Melons", 0.75f),
    (9, "GU", 0.6f)
  )
)

val distances = map.mapValues(_.map(_._3)).getOrElse("Education Route (GU)", List.empty)
val steps = map.mapValues(_.map(_._1)).getOrElse("Education Route (GU)", List.empty)

val averageDistance = average[Float](distances)
val averageSteps = average[Int](steps)
println(s"Average distance: $averageDistance")
println(s"Average steps: $averageSteps")

Scastie样本是这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61239283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档