Scala - 如何连接地图中多个键的值
Scala - How to concat values from multiple keys in a map
我想编写一个接受 List[String]
和 Map[String,List[Int]]
的函数。
如果键存在于 Map 中,我想遍历 String 列表并获取值。
我已经有了这个:
def getIntList(search_keys: List[String], mapped: Map[String, List[Int]]): List[Int] =
for ((k:String,v:List[Int]) <- mapped if search_keys.contains(k)) yield {
v
}
此函数未按预期 return List[Int]
,但 Iterable[List[Int]]
。
我已经尝试在 for 循环之后变平,但这没有用。
我想我无法理解循环中 returned 的内容。也许有更好的方法来做到这一点?
非常感谢任何帮助。
尝试l.flatMap(m.get).flatten
,例如
val l = List("a", "c")
val m = Map("a" -> List(1,2), "b" -> List(3,4), "c" -> List(5,6))
l.flatMap(m.get).flatten
// res0: List[Int] = List(1, 2, 5, 6)
其中 m.get
returns Option[List[Int]]
所以我们实际上必须压平两次才能达到 Int
s
我想编写一个接受 List[String]
和 Map[String,List[Int]]
的函数。
如果键存在于 Map 中,我想遍历 String 列表并获取值。
我已经有了这个:
def getIntList(search_keys: List[String], mapped: Map[String, List[Int]]): List[Int] =
for ((k:String,v:List[Int]) <- mapped if search_keys.contains(k)) yield {
v
}
此函数未按预期 return List[Int]
,但 Iterable[List[Int]]
。
我已经尝试在 for 循环之后变平,但这没有用。
我想我无法理解循环中 returned 的内容。也许有更好的方法来做到这一点?
非常感谢任何帮助。
尝试l.flatMap(m.get).flatten
,例如
val l = List("a", "c")
val m = Map("a" -> List(1,2), "b" -> List(3,4), "c" -> List(5,6))
l.flatMap(m.get).flatten
// res0: List[Int] = List(1, 2, 5, 6)
其中 m.get
returns Option[List[Int]]
所以我们实际上必须压平两次才能达到 Int
s