我有一個這樣List的Scala 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)). 基本上,我需要更改keyto并將andid連接到。fnamelnamename
我嘗試了下面的代碼。它有效,但我相信應該有更好的方法來做到這一點。有人可以建議嗎?
val modData: List[Map[String, String]] = data.map(d => Map("id" -> d.getOrElse("key", ""), "name" -> s"${d.getOrElse("fname", "")} ${d.getOrElse("lname", "")}"))
uj5u.com熱心網友回復:
我會分步進行,并使用地圖的默認值以使其更具可讀性:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/486226.html
