首页 > 解决方案 > 如何从 List 内的 Map 中获取特定的键->值对

问题描述

此处问题的更多详细信息:

我有地图列表,我需要从中获取特定的键值对,然后将其展平以获取值列表。

例子:

val res0: Seq[Seq[Map[String, Any]]] = 
List(
List(Map(city -> london, country -> uk, zipcode -> 12345)),
List(Map(city -> berlin, country -> germany, zipcode -> 4343), Map(city -> frankfurt, country -> germany, zipcode -> 5344))
)

这就是我想要的

List(List(london), list(berlin, frankfurt))

尝试了以下方法但无法弄清楚

scala> res0.map(x => x.flatten).foreach(println)
List((city,london), (country,uk), (zipcode,12345))
List((city,berlin), (country,germany), (zipcode,4343), (city,frankfurt), (country,germany), (zipcode,5344))

另外,如果我在下面做这样的事情:

res0.map(x => x.map(y => println(y)))
Map(city -> london, country -> uk, zipcode -> 12345)
Map(city -> berlin, country -> germany, zipcode -> 4343)
Map(city -> frankfurt, country -> germany, zipcode -> 5344)

这不是我最初提到的预期输出

标签: scala

解决方案


这应该可以解决问题:

res0.map(_.flatMap(_.get("city")))

请注意,Option如果List密钥city不在您的Map.

我强烈建议您将地图(我怀疑来自 json)编码为case class


推荐阅读