从Scala中的地图列表中删除元素

Seb*_*ner 1 collections scala scala-collections

我有一个ListMap,每个含有三个键/值对:

List(
  Map("id" -> 1, "key" -> 11, "value" -> 111), 
  Map("id" -> 2, "key" -> 22, "value" -> 222), 
  Map("id" -> 3, "key" -> 33, "value" -> 333), 
  Map("id" -> 4, "key" -> 44, "value" -> 444))
Run Code Online (Sandbox Code Playgroud)

我想将其转换为JSON,但在此之前,我需要key从每个地图中删除它的值并将value密钥重命名为title.如何在Scala中以优雅的方式完成此操作?

dhg*_*dhg 6

你可以这样做:

val m1 = Map("id" -> 1, "key" -> 2, "value" -> 3)
val m2 = m1 - "key"  // Map(id -> 1, value -> 3)
val m3 = m2 + ("title" -> m2("value")) - "value"
// Map(id -> 1, title -> 3)
Run Code Online (Sandbox Code Playgroud)

所以,对于整个列表:

list.map(m => m + ("title" -> m("value")) - "value" - "key")
Run Code Online (Sandbox Code Playgroud)