C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で2つの辞書(Dictionary)のキーを結合する方法【HashSetのUnionWith()活用】

C#で2つのDictionary(辞書)のキーを1つにまとめたい場合、HashSetクラスのUnionWith()メソッドを利用すると簡単に実現できます。UnionWith()は指定したコレクションとの和集合(ユニオン)を計算するメソッドで、重複するキーは自動的に除外されます。

この記事では、2つの辞書のキーを結合する具体的な手順を、サンプルコードとともにわかりやすく解説します。

手順1:結合対象となる辞書を用意する

まず、結合する2つのDictionaryを作成し、それぞれに要素を追加します。

Dictionary<string, int> dict1 = new Dictionary<string, int>();
dict1.Add("one", 1);
dict1.Add("Two", 2);

Dictionary<string, int> dict2 = new Dictionary<string, int>();
dict2.Add("Three", 3);
dict2.Add("Four", 4);

手順2:HashSetとUnionWith()でキーを統合する

次に、1つ目の辞書のキーでHashSetを初期化し、UnionWith()メソッドを使って2つ目の辞書のキーを追加します。これにより、両方の辞書のキーが重複なく統合されます。

HashSet<string> hSet = new HashSet<string>(dict1.Keys);
hSet.UnionWith(dict2.Keys);

完全なサンプルコード

以下が、ここまでの手順をまとめた完全なコードです。

using System;
using System.Collections.Generic;

public class Program {
    public static void Main() {
        // 1つ目の辞書を作成
        Dictionary<string, int> dict1 = new Dictionary<string, int>();
        dict1.Add("one", 1);
        dict1.Add("Two", 2);

        // 2つ目の辞書を作成
        Dictionary<string, int> dict2 = new Dictionary<string, int>();
        dict2.Add("Three", 3);
        dict2.Add("Four", 4);

        // dict1のキーでHashSetを初期化し、dict2のキーを統合
        HashSet<string> hSet = new HashSet<string>(dict1.Keys);
        hSet.UnionWith(dict2.Keys);

        Console.WriteLine("Union of Dictionary...");
        foreach(string val in hSet) {
            Console.WriteLine(val);
        }
    }
}

実行結果

Union of Dictionary...
one
Two
Three
Four

ポイント解説

HashSetとは:重複しない要素だけを管理するコレクションクラスです。同じキーを複数回追加しようとしても、自動的に1つにまとめられます。

UnionWith()メソッドとは:現在のHashSetに対して、引数で渡したコレクションとの和集合を求めるメソッドです。すでに存在する要素は無視されるため、2つの辞書に同じキーが含まれていてもエラーにはなりません。

なお、キーだけでなく値も含めて辞書同士をマージしたい場合は、foreachループやLINQのConcat()メソッドなどを使う方法もあります。目的に応じて使い分けるとよいでしょう。

  1. C言語で2つの文字列を入れ替える方法:strcpy()関数の使い方を解説

    C言語において、2つの文字列の場所を入れ替える(スワップする)には、strcpy()関数を使用します。本記事では、文字列の基本的な扱い方から、strcpy()関数を使った文字列の入れ替えプログラムまで、サンプルコード付きでわかりやすく解説します。文字列とは文字列とは、文字型(char)の配列、すなわち複数の文字を集めたもののことです。C言語では、文字列は終端を示すヌル文字「\0」で終わる文字配列として表現されます。文字列の宣言文字配列は以下のように宣言します。char stringname [size];例えば、次のように宣言すると、最大50文字の文字列を格納できる配列が作成されます。char

  2. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁