Neu in der Programmierung in einem "funktionalen" Stil. Normalerweise würde ich eine Reihe von verschachtelten foreach Schleifen und +=
zu Summen schreiben.Aufrollen von Daten mit verschachtelten Karten in Scala
Ich habe eine Datenstruktur, die wie folgt aussieht:
Map(
"team1" ->
Map(
"2015" -> Map("wins" -> 30, "losses" -> 5),
"2016" -> Map("wins" -> 3, "losses" -> 7)
),
"team2" ->
Map(
"2015" -> Map("wins" -> 22, "losses" -> 1),
"2016" -> Map("wins" -> 17, "losses" -> 4)
)
)
Was ich will, ist eine Datenstruktur, die einfach die Jahresinformationen wegwirft und fügt Gewinne/Verluste zusammen mit Team.
Map(
"team1" -> Map("wins" -> 33, "losses" -> 12),
"team2" -> Map("wins" -> 39, "losses" -> 5)
)
Ich habe bei groupBy suchen, aber das scheint nur dann sinnvoll sein, wenn ich diese verschachtelte Struktur nicht haben.
Irgendwelche Ideen? Oder ist der traditionellere Imperativ/Foreach-Ansatz hier günstig?
Dank! Letztendlich habe ich Ihre Lösung in 'mapValues (_. Values.flatten.groupBy (_._ 1) .mapValues (_. Map (_._ 2) .sum))' 'geändert, aber das hat gut funktioniert. – diplosaurus