如何在 Scala 中转换 List[Map[String, String]]

How to transform a List[Map[String, String]] in Scala

我有一个 Scala List of Map[String, String] 这样的:

val data: List[Map[String, String]] = List(Map("key" -> "123", "fname" -> "Alice", "lname" -> "Baker"), Map("key" -> "456", "fname" -> "Bob", "lname" -> "Lotts"))

我想将其转换为 List,如下所示:List(Map(id -> 123, name -> Alice Baker), Map(id -> 456, name -> Bob Lotts))。基本上,我需要将 key 更改为 id 并将 fnamelname 连接到 name.

我尝试了下面的代码。它有效,但我相信应该有更好的方法来做到这一点。谁能推荐一下?

val modData: List[Map[String, String]] = data.map(d => Map("id" -> d.getOrElse("key", ""), "name" -> s"${d.getOrElse("fname", "")} ${d.getOrElse("lname", "")}"))

我会分步进行,并使用地图的默认值以使其更具可读性:

    val keys = Seq("key", "fname", "lname")
    list.iterator
      .map(_.withDefault(_ => ""))
      .map(keys.map)
      .collect { case Seq(id, fname, lname) => Map("id" -> id, "name" -> s"$fname $lname") }
      .toList