Scala - 如何在一个映射中连接多个键的值?

问题描述 投票:0回答:1

我想写一个函数,将一个 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之后进行平坦化处理,但没有成功。我想我对循环中返回的内容理解有问题。也许有更好的方法来做这件事?任何帮助都非常感激。

scala functional-programming yield
1个回答
2
投票

试试 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]] 因此,我们实际上必须将其平坦化两次才能得到。Ints

© www.soinside.com 2019 - 2024. All rights reserved.