我目前是一名学生,正在完成一项工作,但我误解了这个问题。我当时想要获得最新的"最近的"每个数据的价格,但我创建它,以便我单独搜索每个数据。 例如,我会在菜单选项中按1并输入" SK1"平均结果显示,我需要修改这个,所以当我在菜单选项中按1时,我不输入任何内容并显示所有平均值。
这是我当前搜索数据并返回结果的代码。我需要返回所有搜索到的数据。
P.S。 Mapdata是一个" Map(String,List [Int])"
//5 - Show Current data Level
def handleFive(): Boolean = {
mnuShowSingleData(currentDataLevel)
true
}
// Returns a single result, not a list
def mnuShowSingleData(data: (String) => (String,Int)) = {
print("data > ")
val data2 = data(readLine)
println(s"${data2._1}: ${data2._2}")
}
//Show last element in the list, most current
def currentDataLevel (data: String): (String, Int) = {
(data, mapdata.get (data).map(findLast(_)).getOrElse(0))
}
我理解我正在做什么以及如何搜索单个结果,只是不确定如何修改它以搜索并返回所有数据的最后元素。
措辞更准确;
给定Map [String,List [Int]],如何生成Map [String,Int] 对于输入中的每个键,结果值将是最后一个 相应值中的项,如果值为空列表,则为0? 例如,对于此输入:
答案 0 :(得分:0)
首先,我会将问题重新解释为我认为的问题:
给定
Map[String, List[Int]]
,如何为输入中的每个键生成Map[String, Int]
,结果值将是相应值中的最后一项,如果是0
值是一个空列表?例如,对于此输入:
val m = Map("a" -> List(1,2,3), "b" -> List(4,5), "c" -> List[Int]())
我想要以下输出:
Map("a" -> 3, "b" -> 5, "c" -> 0)
如果这是问题 - 这就是答案:
m.mapValues(_.lastOption.getOrElse(0))
编辑:纳入OP的代码:
def mnuShowSingleData() = {
val current = currentDataLevel()
// just a suggestion, you can obviously play around with the way this is printed:
print(s"data > ${current.mkString(", ")}")
}
def currentDataLevel(): Map[String, Int] = {
mapdata.mapValues(_.lastOption.getOrElse(0))
}
// prints: data > a -> 3, b -> 5, c -> 0