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

C#でDictionary(ディクショナリ)を反復処理する方法を解説

C#でDictionary(ディクショナリ)の全要素を反復処理するには、いくつかの方法があります。ここでは、キーの一覧を取得してループ処理する基本的な手順を、サンプルコード付きでわかりやすく解説します。

1. ディクショナリに要素を追加する

まず、IDictionary<int, int>型のディクショナリを作成し、Addメソッドで要素を追加します。

IDictionary<int, int> d = new Dictionary<int, int>();
d.Add(1, 97);
d.Add(2, 89);
d.Add(3, 77);
d.Add(4, 88);

2. キーの一覧を取得する

Keysプロパティを使うと、ディクショナリに格納されているすべてのキーを取得できます。取得したキーのコレクションは、そのままList<int>に渡すことでリスト化できます。

List<int> myList = new List<int>(d.Keys);

3. foreachで反復処理する

キーの一覧をforeachループで順番に取り出しながら、キーをインデックスとして対応する値へアクセスします。

foreach (int k in myList) {
    Console.WriteLine("{0}, {1}", k, d[k]);
}

サンプルコード全体

以下は、これまでの手順をまとめた完全なサンプルプログラムです。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        IDictionary<int, int> d = new Dictionary<int, int>();
        d.Add(1, 97);
        d.Add(2, 89);
        d.Add(3, 77);
        d.Add(4, 88);

        List<int> myList = new List<int>(d.Keys);

        foreach (int k in myList) {
            Console.WriteLine("{0}, {1}", k, d[k]);
        }
    }
}

実行結果

1, 97
2, 89
3, 77
4, 88

補足:KeyValuePairを使ったより簡潔な方法

実際には、キーの一覧を別途作成しなくても、KeyValuePair構造体を使えばディクショナリを直接反復処理できます。

foreach (KeyValuePair<int, int> pair in d) {
    Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
}

この方法ではコードがシンプルになり、余計なリスト生成も発生しないため、パフォーマンス面でも有利です。用途に応じて両者の方法を使い分けるとよいでしょう。

  1. Pythonでネストされた辞書を再帰的に反復処理する方法

    Pythonでは、辞書(dict)の中にさらに辞書が入れ子になった「ネストされた辞書」を扱うことがあります。このような多層構造のデータをすべて走査するには、再帰的なアプローチが最も効果的です。 以下は、ネストされた辞書オブジェクトの例です。 D1={1: {2: {3: 4, 5: 6}, 3: {4: 5, 6: 7}}, 2: {3: {4: 5}, 4: {6: 7}}} 再帰関数による反復処理 各キーに対応する値が辞書そのものである場合は、同じ関数を再帰的に呼び出して、より深い階層へと処理を進めます。値が辞書でない場合は、そのキーと値を出力します。 def iterdict(d): &

  2. Pythonで辞書を反復処理する2つの方法をわかりやすく解説

    Pythonの辞書(dict)オブジェクトを反復処理する方法は主に2つあります。1つ目は、keys()メソッドでキーのリストを取得し、各キーに対応する値を取り出す方法です。keys()メソッドを使った反復処理>>> D1 = {1:a, 2:b, 3:c} >>> for k in D1.keys(): print (k, D1[k]) 1 a 2 b 3 c keys()メソッドは辞書内のすべてのキーを返します。ループ内でキーを変数kに受け取り、D1[k]のように記述することで、そのキーに関連付けられた値へアクセスできます。items()メソッドを