Lets sagen, ich habe die folgende Liste:Scala Konvertieren Liste der Karten von Listen Karte basierend auf der Karte Key
val myList = List(Map(1 -> 1), Map(2 -> 2), Map(2 -> 7))
Ich mag diese Liste auf eine einzige Karte von Int konvertieren -> Liste (Int). Wenn wir doppelte Schlüssel haben, sollten beide Werte in der resultierenden Werteliste enthalten sein.
Map(2 -> List(7,2),1 -> List(1))
Ich kam mit dieser Arbeitslösung, aber es scheint übermäßig und klobig.
myList.foldLeft(scala.collection.mutable.Map[Int,List[Int]]()) {(result,element) =>
for((k,v) <- element) {
if (result.keySet.contains(k)) {
result(k) = result(k).:: (v)
} else {
result += (k -> List(v))
}
}
result
}
Gibt es hier einen besseren oder effizienteren Ansatz?