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

C#でDictionary(辞書)をキーや値でソートする方法

C#のDictionaryをソートする基本の手順

C#でDictionary(辞書)の中身を並べ替えて表示したい場合、「キーの一覧を取得してソートし、その順序で値を取り出す」というのが基本的なアプローチです。ここでは、具体的な手順をサンプルコード付きで解説します。

1. キーと値を持つDictionaryを作成する

まず、Dictionary<string, int>型の変数を作成し、Addメソッドでキーと値のペアを追加します。

var d = new Dictionary<string, int>();
d.Add("Zack", 0);
d.Add("Akon", 3);
d.Add("Jack", 2);
d.Add("Tom", 1);

2. キーを取得してソートする

次に、KeysプロパティですべてのキーをListとして取得し、Sortメソッドで昇順に並べ替えます。

var val = d.Keys.ToList();
val.Sort();

サンプルコード全体

以下のコードを実行すると、Dictionaryのエントリがキーのアルファベット順にソートされて出力されます。

using System;
using System.Collections.Generic;
using System.Linq;

class Demo {
    static void Main() {
        var d = new Dictionary<string, int>();
        d.Add("Zack", 0);
        d.Add("Akon", 3);
        d.Add("Jack", 2);
        d.Add("Tom", 1);

        // キーを取得してソートする
        var val = d.Keys.ToList();
        val.Sort();

        // ソート済みのキーをループして表示
        foreach (var key in val) {
            Console.WriteLine("{0}: {1}", key, d[key]);
        }
    }
}

実行結果

Akon: 3
Jack: 2
Tom: 1
Zack: 0

補足:値(Value)でソートしたい場合

キーではなく値を基準に並べ替えたい場合は、LINQのOrderByメソッドを使うと簡単です。次のように記述すると、値の昇順でエントリを列挙できます。

foreach (var kvp in d.OrderBy(x => x.Value)) {
    Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);
}

この場合、出力は値の小さい順(0 → 1 → 2 → 3)になります。逆に降順で並べたいときは、OrderByDescendingを使用してください。用途に応じてキー・値どちらのソートも使い分けると、Dictionaryをより柔軟に扱えるようになります。

  1. Pythonで辞書のリストを値でソートする方法|sorted関数とlambdaの使い方

    本記事では、複数の辞書を格納したリストを、各辞書が持つ値(value)に基づいて並べ替える方法を解説します。 サンプルとして使う辞書には、「name(名前)」と「roll(出席番号)」という2つのキーが含まれています。まずはPythonの組み込み関数 sorted() とラムダ式(lambda)を組み合わせて、roll の値で昇順にソートした結果を表示します。 続いて、name と roll の両方を組み合わせた条件でのソート、そして roll の値で降順にソートする方法まで、順番に見ていきましょう。 サンプルコード # 辞書のリストを初期化 my_list1 = [{ name : A

  2. Pythonで辞書の値をキーにして辞書のリストを並べ替える方法

    sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」