【发布时间】:2020-07-06 13:51:42
【问题描述】:
我需要将键映射到 Scala 列表中的映射。也就是说,我需要从这里出发:
Map(k1 -> List(Map(k2 -> v2)))
得到这个:
Map(k1 -> Map(k2 -> v2))
这个东西正在工作,但我正在寻找更有效的东西。
val m1 = Map("k1" -> List(Map("k2" -> "v2")))
val m2 = m1("k1").flatten.toMap
val m3 = Map("k1" -> m2)
有什么想法吗?
提前致谢。
【问题讨论】:
-
如果列表有多个地图会怎样?密钥保证永远不会相同吗?如果不是,重复项应该怎么办?
-
这不会发生,列表中总是只有一张地图。是的,它们永远不会相同。
-
m1.view.mapValues(_.head).toMap应该可以解决问题。但是,您似乎正在处理一些类似 JSON 的数据,我建议您查看任何优秀的 scala 库。此外,您知道列表总是只有一个元素这一事实似乎是一个设计错误,那为什么它是一个列表呢? -
是的,你确实是对的。我刚刚发布了一个新问题,包括更多详细信息,如果您想查看它:stackoverflow.com/questions/60860141/…。不过,您的回答适合这个特定的问题,所以我决定创建一个新帖子。谢谢!
标签: scala