【发布时间】:2015-04-18 19:24:15
【问题描述】:
我有一个像这样的嵌套地图:
Map(1 -> Map(2 -> 3.0, 4 -> 5.0), 6 -> Map(7 -> 8.0))
我想以某种方式“展平”它,使外部和内部映射的键成对,即对于上面的示例:
Seq((1,2),(1,4),(6,7))
有什么优雅的方法可以做到这一点?
【问题讨论】:
标签: 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))
有什么优雅的方法可以做到这一点?
【问题讨论】:
标签: scala scala-collections dictionary-comprehension
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,_))})
【讨论】:
为了理解:
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))
【讨论】: