简体   繁体   English

Scala展平嵌套地图

[英]Scala flatten nested map

I have a nested Map like this one: 我有一个像这样的嵌套Map:

Map(1 -> Map(2 -> 3.0, 4 -> 5.0), 6 -> Map(7 -> 8.0))

I would like to 'flatten' it in a way such that the keys of the outer and inner maps are paired, ie for the example above: 我希望以一种方式“展平”它,使得外部和内部地图的键配对,即对于上面的示例:

Seq((1,2),(1,4),(6,7))

what is an elegant way to do this? 这是一种优雅的方式吗?

val m =  Map(1 -> Map(2 -> 3.0, 4 -> 5.0), 6 -> Map(7 -> 8.0))
m.toSeq.flatMap({case (k, v) => v.keys.map((k,_))})

With for-comprehension: 理解:

val m =  Map(1 -> Map(2 -> 3.0, 4 -> 5.0), 6 -> Map(7 -> 8.0))

scala> for((k1, v1) <- m.toSeq; k2 <- v1.keys) yield (k1, k2)
res4: Seq[(Int, Int)] = ArrayBuffer((1,2), (1,4), (6,7))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM