Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 将地图列表解压缩到另一个地图中_Scala - Fatal编程技术网

Scala 将地图列表解压缩到另一个地图中

Scala 将地图列表解压缩到另一个地图中,scala,Scala,我有一张地图清单 val names = List(Map("rawname"->"a", "stdname" -> "A"), Map("rawname"->"b", "stdname" -> "B"), Map("rawname"->"c", "stdname" -> "C")) 我想把它打开 val rawToStd = Map("a" -> "A", "b" -> "B", "c" -> "C") 我试过了 val rawToSt

我有一张地图清单

val names = List(Map("rawname"->"a", "stdname" -> "A"), Map("rawname"->"b", "stdname" -> "B"), Map("rawname"->"c", "stdname" -> "C"))
我想把它打开

val rawToStd = Map("a" -> "A", "b" -> "B", "c" -> "C")
我试过了

val rawToStd = names.map(e => e.getOrElse("rawname", "") -> e.getOrElse("stdname", "")).toMap

这正是我想要的,但我相信一定有更好的(更惯用或更简洁)方式。例如,我不喜欢重复
getOrElse

> p>如果您在代码< >代码> RWNAME> />代码>代码> STDNEX/CODE>关键字中存在映射,则可以考虑使用,而不是<代码> MAP.GET和 MAP.GETORSER < /代码>:

scala> val rawToStd = names.map(e => e("rawname") -> e("stdname")).toMap
rawToStd: scala.collection.immutable.Map[String,String] = Map(a -> A, b -> B, c -> C)

您可以使用
collect
来实现此目的

names collect 
      { case element => element("rawname") -> element("stdname")}
toMap
res1: scala.collection.immutable.Map[String,String] = Map(a -> A, b -> B, c -> C)