我想写一个函数,将一个 List[String]
和a Map[String,List[Int]]
. 我想遍历String的列表,如果Map中存在键,则获取其值。我已经有了这个函数。
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
}
这个函数不返回一个 List[Int]
不过 Iterable[List[Int]]
. 我已经尝试过在for-loop之后进行平坦化处理,但没有成功。我想我对循环中返回的内容理解有问题。也许有更好的方法来做这件事?任何帮助都非常感激。
试试 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
返回 Option[List[Int]]
因此,我们实际上必须将其平坦化两次才能得到。Int
s