リストにある複数のマップをマージしたい。各マップには、2つのキーと値のペアがあります。私が持っているもの複数のマップをマージしてリストに値を保存する
...私が欲しいもの
val input = List[Map[String, String]]
Map[a -> b, c -> d],
Map[a -> b, c -> e],
Map[a -> f, c -> h]
...
val output = Map[String, List[String]]
Map[b -> (d, e), f -> (h)]
私が研究してきたが、私は見つけることができる最も近い、これはされていない、(Scala: Merge maps by key)でした私が探しているシナリオ。理想的には、単なるコード行ではなく、説明に感謝します。これはfor-loopsで行うことができますが、マップをマージするScalaの方法を学ぼうとしています。
編集:コメントでの議論の後、私は少し質問を単純化することに決めました。キー 'a'と 'c'は静的/関連性がない/ハードコーディングできます。
目標は、キー 'a'に関連付けられた値がキーになり、キー 'c'に関連付けられた値が値になる新しいマップを作成することです。すべての新しいマップが作成されたら、類似したキーを持つマップをグループ化して、それらの値をすべてリストに入れることができます。
なぜ例えば、 'f'がキーになり、' h'が値になりますが、それ以外の方法ではありませんか?定義上、 'Maps'は順序付けされていないので、どの値がキーになり、どの値が値リストのメンバーになるかを決めるためにどのような規則が使われるかを指定する必要があります。 – jwvh
多くの 'f'値(またはb)が繰り返されるため、それらをキーにするのがよりクリーンです。すべての 'h'値(またはd/e)はユニークな値なので、リスト内でグループ化することができます。 –
コメントを削除して申し訳ありません、それは事故でした。あぁ、了解。説明ありがとう。 – Tanjin