[英]Convert List[Map[String,Map[String,Int]]] to Map[Int,Int] in Scala
給定以下內容:
val t: List[Map[String, Map[String, Int]]] = List(
Map("a" -> Map("m" -> 1, "l" -> 21)),
Map("a" -> Map("m" -> 2, "l" -> 22)),
Map("a" -> Map("m" -> 3, "l" -> 23)),
Map("a" -> Map("m" -> 4, "l" -> 24))
)
我想要結果:
Map(1->21,2->22,3->23,4->24)
到目前為止,我有:
val tt = (for {
(k,v) <- t
newKey = v("m")
newVal = v("l")
} yield Map(newKey -> newVal)).flatten.toMap
但這不是類型檢查,因此我無法理解為什么不能缺少基本的理解?
我的問題是:
您有List[Map[...]]
而不是Map[...]
所以您想先將其拆包。
val tt = (for {
map <- t
(k, v) <- map
} ...)
t
.iterator
.flatMap(_.values)
.map { v => v("m") -> v("l") }
.toMap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.