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