より「機能的」なスタイルでプログラミングするのは初めてです。通常は、一連のネストされたforeachループと+=
を合計に書きます。Scalaでネストされたマップを使用してデータをロールアップする
私はのように見えるのデータ構造を有する:私が欲しいもの
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)
)
)
は単に年の情報を捨て、チームで一緒に勝利/損失を追加するデータ構造です。
Map(
"team1" -> Map("wins" -> 33, "losses" -> 12),
"team2" -> Map("wins" -> 39, "losses" -> 5)
)
私はgroupByで見てきたが、それは私がこの入れ子構造を持っていない場合にのみ役立ちそうです。
アイデア?あるいは、より伝統的な命令/ foreachアプローチがここで有利です。
ありがとう!私は最終的にあなたのソリューションを 'mapValues(_。values.flatten.groupBy(_._ 1).mapValues(_。map(_。_ 2).sum))'に変更しました。 – diplosaurus