scala - 如何从 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)
这不是我最初提到的预期输出
解决方案
这应该可以解决问题:
res0.map(_.flatMap(_.get("city")))
请注意,Option
如果List
密钥city
不在您的Map
.
我强烈建议您将地图(我怀疑来自 json)编码为case class
推荐阅读
- c# - 如何将 newtonsoft.json 代码更改为 system.text.json
- sql - 如何在 Oracle 中使用“CASE WHEN”语法?
- python - Discord 机器人 python 脚本
- go - Golang:代码含义(括号内写接口)
- flutter - 显示小吃栏以处理丢失的 URL 接收器
- delphi - Delphi TCheckbox 问题覆盖 WM_PAINT
- flask - 如何将数据库模型类中字段的默认值设置为函数的返回值?
- json - 从非结构化 JSON 数据中获取键和值
- android - 如果安装在旧版本的应用程序上,则 FirebaseMessagingService 未启动
- node.js - 将节点应用程序部署到 Azure 应用程序服务时 .bin 文件夹中缺少文件