【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の発生を防げる。
-
Pythonで指定した基数表現に0が連続して含まれるかどうかを判定する方法
プログラミングでは、ある数値を特定の基数(進法)で表したとき、その桁並びの中に「0」が連続して現れるかどうかを調べたいことがあります。本記事では、Pythonを使ってこの判定を行う方法を解説します。 実装の流れとしては、数値と基数を引数として受け取る関数を定義し、その内部で別の補助関数を呼び出すことで、条件を満たすかどうかに応じて「Yes」または「No」を出力します。 サンプルコード 0): res = False continue res = True return True N, K = 8, 2 print(Do
-
Pythonで与えられた数値がユークリッド数(Euclid Number)かどうかを判定する方法
ユークリッド数とは? ある整数 n が与えられたとき、それがユークリッド数であるかどうかを判定することを考えます。ユークリッド数とは、次の式で表すことができる整数のことです。 n = Pn + 1 ここで Pn は「最初の n 個の素数の積」を意味します。 例として、入力が n = 211 の場合を考えてみましょう。211 は次のように表せるため、出力は True になります。 211 = (2 × 3 × 5 × 7) + 1 解決のためのアプローチ この問題は、以下の手順で解くことができます。 上限値 MAX を 10000 に設定し、空の素数リスト primes を用意します。 関数