Scala:for循环与getOrElse无关';不行?

Scala:for循环与getOrElse无关';不行?,scala,for-loop,functional-programming,Scala,For Loop,Functional Programming,我想在地图中找到键列表的值。如果映射不包含键,它应该返回一个空列表 val keys = List("a", "b", "c") val kv = Map("a" -> List(0,1), "b" -> List(1)) val结果:List[List[Int]=List(List(0,1),List(1),List()) 我的做法如下: val result = for (key <- keys; value <- kv.getOrElse(key, List.em

我想在地图中找到键列表的值。如果映射不包含键,它应该返回一个空列表

val keys = List("a", "b", "c")
val kv = Map("a" -> List(0,1), "b" -> List(1))
val结果:List[List[Int]=List(List(0,1),List(1),List())

我的做法如下:

val result = for (key <- keys; value <- kv.getOrElse(key, List.empty[Int])) yield value

val result=for(key您正在执行与
flatMap
等效的操作,因此将返回空列表,它只是被展平。您只想使用
map

keys map {kv.getOrElse(_, List())}

如果您想坚持使用
进行产量
,只需将
生成器更改为赋值:

for (key <- keys; value = kv.getOrElse(key, List.empty[Int])) yield value

对于要扫描多个键的键,是否要为每个不可用的键返回一个空列表?
for (key <- keys) yield kv.getOrElse(key, List.empty[Int])