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

【C#】Dictionaryに特定の値が含まれているか確認する方法

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

以下に、実際のコード例と実行結果を示します。

例1:値が存在する場合

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.ContainsValue("Kevin"))
         Console.WriteLine("値が見つかりました!");
      else
         Console.WriteLine("その値はディクショナリ内に存在しません!");

      dict.Clear();
      Console.WriteLine("\nクリア後のキーと値のペア...");

      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

例2:値が存在しない場合

続いて、検索対象の値がディクショナリに存在しない場合の動作を確認してみましょう。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      Dictionary<string, string> dict = new Dictionary<string, string>();

      dict.Add("One", "Chris");
      dict.Add("Two", "Steve");
      dict.Add("Three", "Messi");
      dict.Add("Four", "Ryan");
      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.ContainsValue("Angelina"))
         Console.WriteLine("値が見つかりました!");
      else
         Console.WriteLine("その値はディクショナリ内に存在しません!");

      dict.Clear();
      Console.WriteLine("\nクリア後のキーと値のペア...");

      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 = Chris
Key = Two, Value = Steve
Key = Three, Value = Messi
Key = Four, Value = Ryan
Key = Five, Value = Nathan
その値はディクショナリ内に存在しません!
クリア後のキーと値のペア...
現在の要素数 = 0

補足:ContainsValue メソッドの注意点

ContainsValue メソッドは、ディクショナリ内のすべての値を先頭から順番に比較する線形探索(計算量 O(n))を行います。そのため、要素数が多いディクショナリに対して頻繁に呼び出すと、パフォーマンスに影響を与える可能性があります。

一方、キーの存在確認に使用する ContainsKey メソッドはハッシュテーブルの仕組みを利用しているため、ほぼ O(1) で高速に動作します。値ではなくキーでの検索が可能な場合は、ContainsKey を使うことをおすすめします。

  1. C#で入力された数値がアームストロング数かどうかを判定するプログラム

    アームストロング数(Armstrong Number)とは、3桁の数値の場合、各桁の数字を3乗した値の合計が、元の数値そのものと等しくなる数のことです。例として挙げられるのが「153」です。153は以下のように表すことができます。1³ + 3³ + 5³C#でアームストロング数かどうかを判定するには、まず対象となる数値の各桁を取り出し、それぞれの3乗を足し合わせていきます。ここでは、判定したい数値を変数「val」に格納しています。ループ処理では、10で割りながら余りを求めることで、一の位から順に各桁の数字を取り出します。for (int i = val; i > 0; i = i / 1

  2. Python Pandas入門:DateOffset値が正規化(normalize)されているかどうかを確認する方法

    PandasでDateOffsetオフセット値が正規化(normalize)されているかどうかを確認するには、offset.normalize プロパティを使用します。このプロパティは、DateOffsetオブジェクトの作成時に normalize=True が指定されているかどうかをブール値(True / False)で返します。 DateOffsetの正規化確認の手順 まず、必要なライブラリをインポートします。 from pandas.tseries.offsets import DateOffset import pandas as pd Pandasでタイムスタンプオブジェクトを設定し