【问题标题】:Nested map iterator in scalascala中的嵌套映射迭代器
【发布时间】:2018-06-18 14:24:28
【问题描述】:

我的代码中有嵌套地图输出,如下所示

Map(test -> 113123, "cat" -> None, myList -> Map(test2 -> 321323, test3 -> 11122))

但是如果有人知道,我希望使用 scala 迭代器进行如下输出,请帮助我,因为我是非常新的 Scala

Map(test -> 113123, "cat" -> None, myList -> Some(Map(test2 -> 321323, test3 -> 11122)))

【问题讨论】:

    标签: scala scala-collections


    【解决方案1】:

    假设你有这样的数据

    val data = Map("test" -> 113123, "cat" -> None, "myList" -> Map("test2" -> 321323, "test3" -> 11122))
    //data: scala.collection.immutable.Map[String,Any] = Map(test -> 113123, cat -> None, myList -> Map(test2 -> 321323, test3 -> 11122))
    

    那你就可以了

    val output = data.map(x => if (x._2.isInstanceOf[Map[String, Long]]) (x._1 -> Some(x._2)) else x)
    //output: scala.collection.immutable.Map[String,Any] = Map(test -> 113123, cat -> None, myList -> Some(Map(test2 -> 321323, test3 -> 11122)))
    

    得到你想要的输出

    您可以使用printlnoutput 视为

    println(output)
    //Map(test -> 113123, cat -> None, myList -> Some(Map(test2 -> 321323, test3 -> 11122)))
    

    【讨论】:

    • val output = data.map(x => if (x._2.isInstanceOf[Map[String, Long]]) (x._1 -> Some(x._2)) else x) println(output),我没有得到任何输出,你能帮我解决这个问题吗
    • 您必须打印它们或将其保存在文件中。
    • 我想从现有地图中创建具有某些价值的新地图
    • 我想要这样的输出:Map(test -> 113123, "cat" -> None, myList -> Some(Map(test2 -> 321323, test3 -> 11122)))
    • myMap.mapValues { case v@Option => v case v => Some(v) }
    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2018-11-15
    • 2020-04-18
    相关资源
    最近更新 更多