C#の辞書(Dictionary)を結合する方法について書いています。
Linqを使って結合するか、Addメソッドを使って結合したように振る舞うことができます。
載せているコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。
辞書を結合する方法
辞書を結合するには、Linqを使うと良いです。
また、Addメソッドを使って、片方の辞書に追加して結合したように振る舞うこともできます。
辞書をLinqを使って結合する
辞書をLinqを使うと、下記のようにして結合することができます。
var fruits1 = new Dictionary<string, int>();
fruits1.Add("apple", 110);
fruits1.Add("banana", 140);
fruits1.Add("grape", 130);
var fruits2 = new Dictionary<string, int>();
fruits2.Add("lemon", 180);
fruits2.Add("peach", 190);
var fruits = fruits1
.Concat(fruits2)
.ToDictionary(x => x.Key, x => x.Value);
foreach (var fruit in fruits) {
Console.WriteLine($"{fruit.Key}は{fruit.Value}円です。");
}
最初にfruits1
変数に対して、辞書オブジェクトを作成して、3つのキーと値を入れています。
次に同じようにfruits2
変数に対して、2つのキーと値で辞書オブジェクトを作成しました。
そしてfruits1
変数からConcatメソッドを呼び出して、fruits2
変数を渡しています。
さらにToDictionaryメソッドを使うことで、辞書に変換して返しています。
結果をfruits
変数で受け取って出力すると、下記のように結合されたことが確認できました。
appleは110円です。
bananaは140円です。
grapeは130円です。
lemonは180円です。
peachは190円です。
辞書をAddメソッドを使って結合する
辞書オブジェクトからAddメソッドを使って、片方の辞書オブジェクトに値を追加することで結合したように振る舞えます。
例えば、下記のように使うことができます。
var drinks1 = new Dictionary<string, int>();
drinks1.Add("water", 110);
drinks1.Add("cola", 120);
drinks1.Add("milk", 100);
var drinks2 = new Dictionary<string, int>();
drinks2.Add("beer", 480);
drinks2.Add("coffee", 280);
foreach (var drink2 in drinks2) {
drinks1.Add(drink2.Key, drink2.Value);
}
foreach (var drink in drinks1) {
Console.WriteLine($"{drink.Key}は{drink.Value}円です。");
}
まずdrinks1
変数に対して、辞書オブジェクトを作成して、3つのキーと値を入れています。
同様にしてdrinks2
変数に対して、辞書オブジェクトを作成して、2つのキーと値を入れました。
次の処理で、foreachでdrinks2
変数をループ処理しています。
drink2
変数には、drinks2
変数の辞書のオブジェクトがループ毎に設定されます。
ループの中で、drinks1
変数に対して、Addメソッドを使ってdrinks2
変数の「キーと値」を追加しています。
このように、ループを回してひとつずつ追加することもできるかと思います。
ここではやっていませんが、重複はチェックするかTryAdd
メソッドを使ったりした方が良いかもしれません。
最後のforeachでは、drinks1
変数をループして、辞書に「キーと値」が追加されたか確認しています。
出力結果を確認すると、下記のように追加されたことが確認できました。
waterは110円です。
colaは120円です。
milkは100円です。
beerは480円です。
coffeeは280円です。
辞書を結合する方法のまとめ
今回はC#の辞書を結合する方法について書きました。
記事の内容をまとめると、下記のようになります。
・Addメソッドを使うことでも、結合したように振る舞うことができた。
コメント