任意の量の Dictionary インスタンスをマージしたい。キーが複数回発生する場合は、アクションを実行したいcurrentResultValue += newFoundValue
。
サンプル コンテキスト: Map/Reduce パターン、Reduce ステップ、非常に大きなテキスト内の単語の出現回数を数え、10 個のマッピングを行い、それぞれがDictionary<string, int>
. reduce 呼び出しでは、これらすべての辞書を 1 つにマージしたいと考えています。
入力例:
Dictionary 1:
"key1" -> 5
"key2" -> 3
Dictionary 2:
"key2" -> 1
Dictionary 3:
"key1" -> 2
"key3" -> 17
期待される結果:
"key1" -> 7
"key2" -> 4
"key3" -> 17
私はLINQベースのソリューションを好みます。たとえば、次のようなものです。
IEnumerable<IDictionary<string, int>> myDictionaries = ...;
myDictionaries.Reduce((curValue, newValue) => curValue + newValue);
拡張メソッドを自分で作成する必要がありますか、またはそのようなものが既に存在しますか?