【问题标题】:Scala flatten nested mapScala展平嵌套地图
【发布时间】: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


    【解决方案1】:
    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,_))})
    

    【讨论】:

      【解决方案2】:

      为了理解:

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

      【讨论】:

        猜你喜欢
        • 2021-06-01
        • 2014-05-28
        • 2017-09-02
        • 1970-01-01
        • 2015-01-28
        • 2018-10-28
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        相关资源
        最近更新 更多