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

【C#】Dictionaryに指定したキーが存在するか確認する方法

C#の Dictionary<TKey, TValue> に特定のキーが存在するかどうかを確認するには、ContainsKey() メソッドを使用します。このメソッドは、指定したキーがディクショナリ内に存在すれば true を、存在しなければ false を返します。

ContainsKey() メソッドとは

ContainsKey() は、ディクショナリから指定されたキーを高速に検索するためのメソッドです。構文は以下のとおりです。

public bool ContainsKey(TKey key);

存在しないキーにアクセスすると例外が発生するため、値を取得する前にこのメソッドでキーの有無をチェックしておくと安全です。

サンプルコード1:キーが存在する場合

まずは、ディクショナリに存在するキー「Three」を検索する例を見てみましょう。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      Dictionary<string, string> dict = new Dictionary<string, string>();
      dict.Add("One", "John");
      dict.Add("Two", "Tom");
      dict.Add("Three", "Jacob");
      dict.Add("Four", "Kevin");
      dict.Add("Five", "Nathan");

      Console.WriteLine("要素数 = " + dict.Count);
      Console.WriteLine("\nキー/値のペア一覧...");
      foreach(KeyValuePair<string, string> res in dict) {
         Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
      }

      if (dict.ContainsKey("Three"))
         Console.WriteLine("キーが見つかりました!");
      else
         Console.WriteLine("キーはディクショナリ内に存在しません!");

      dict.Clear();
      Console.WriteLine("クリア後のキー/値のペア一覧...");
      foreach(KeyValuePair<string, string> res in dict) {
         Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
      }
      Console.WriteLine("現在の要素数 = " + dict.Count);
   }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

要素数 = 5
キー/値のペア一覧...
Key = One, Value = John
Key = Two, Value = Tom
Key = Three, Value = Jacob
Key = Four, Value = Kevin
Key = Five, Value = Nathan
キーが見つかりました!
クリア後のキー/値のペア一覧...
現在の要素数 = 0

この例では、キー「Three」がディクショナリに登録されているため、ContainsKey()true を返し、「キーが見つかりました!」と表示されます。その後、Clear() メソッドですべての要素を削除しているため、最終的な要素数は 0 になっています。

サンプルコード2:キーが存在しない場合

次に、ディクショナリに存在しないキー「mykey」を検索した場合の動作を確認してみましょう。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      Dictionary<string, string> dict = new Dictionary<string, string>();
      dict.Add("One", "John");
      dict.Add("Two", "Tom");
      dict.Add("Three", "Jacob");
      dict.Add("Four", "Kevin");
      dict.Add("Five", "Nathan");

      Console.WriteLine("要素数 = " + dict.Count);
      Console.WriteLine("\nキー/値のペア一覧...");
      foreach(KeyValuePair<string, string> res in dict) {
         Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
      }

      if (dict.ContainsKey("mykey"))
         Console.WriteLine("キーが見つかりました!");
      else
         Console.WriteLine("キーはディクショナリ内に存在しません!");

      dict.Clear();
      Console.WriteLine("クリア後のキー/値のペア一覧...");
      foreach(KeyValuePair<string, string> res in dict) {
         Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
      }
      Console.WriteLine("現在の要素数 = " + dict.Count);
   }
}

実行結果

実行結果は以下のとおりです。

要素数 = 5
キー/値のペア一覧...
Key = One, Value = John
Key = Two, Value = Tom
Key = Three, Value = Jacob
Key = Four, Value = Kevin
Key = Five, Value = Nathan
キーはディクショナリ内に存在しません!
クリア後のキー/値のペア一覧...
現在の要素数 = 0

キー「mykey」は登録されていないため、ContainsKey()false を返し、「キーはディクショナリ内に存在しません!」というメッセージが出力されます。

まとめ

  • Dictionary<TKey, TValue> に指定したキーが存在するかどうかは、ContainsKey() メソッドで確認できる。
  • キーが存在すれば true、存在しなければ false が返される。
  • インデクサで直接値にアクセスする前に ContainsKey() でチェックすることで、KeyNotFoundException の発生を防げる。
  1. Pythonで指定した基数表現に0が連続して含まれるかどうかを判定する方法

    プログラミングでは、ある数値を特定の基数(進法)で表したとき、その桁並びの中に「0」が連続して現れるかどうかを調べたいことがあります。本記事では、Pythonを使ってこの判定を行う方法を解説します。 実装の流れとしては、数値と基数を引数として受け取る関数を定義し、その内部で別の補助関数を呼び出すことで、条件を満たすかどうかに応じて「Yes」または「No」を出力します。 サンプルコード 0): res = False continue res = True return True N, K = 8, 2 print(Do

  2. Pythonで与えられた数値がユークリッド数(Euclid Number)かどうかを判定する方法

    ユークリッド数とは? ある整数 n が与えられたとき、それがユークリッド数であるかどうかを判定することを考えます。ユークリッド数とは、次の式で表すことができる整数のことです。 n = Pn + 1 ここで Pn は「最初の n 個の素数の積」を意味します。 例として、入力が n = 211 の場合を考えてみましょう。211 は次のように表せるため、出力は True になります。 211 = (2 × 3 × 5 × 7) + 1 解決のためのアプローチ この問題は、以下の手順で解くことができます。 上限値 MAX を 10000 に設定し、空の素数リスト primes を用意します。 関数