Scala展平嵌套地图

时间:2015-02-17 22:50:00

标签: scala scala-collections dictionary-comprehension

我有一个像这样的嵌套地图:

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

我想要“变平”'它以一种方式使外部和内部地图的键配对,即上面的例子:

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

这是一种优雅的方式吗?

2 个答案:

答案 0 :(得分:4)

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,_))})

答案 1 :(得分:4)

理解:

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))