C#でキーに基づいてDictionary(HashMap相当)をソートする方法
実は「HashMap」はJavaのクラスであり、C#には存在しません。C#においてHashMapに相当するのは、キーと値のペア(key-value pair)を格納するコレクションであるDictionaryです。
本記事では、C#のDictionaryをキー順にソートする方法を、具体的なサンプルコードとともに解説します。
1. Dictionaryの準備
まずは、ソート対象となるDictionaryを作成します。ここでは、スポーツ名をキー、番号を値として登録します。
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("soccer", 1);
d.Add("cricket", 2);
d.Add("tennis", 3);
d.Add("rugby", 4);2. キーの取得とソート
次に、Keysプロパティで全キーを取得し、ToList()メソッドでリスト化したうえで、Sort()メソッドを使って昇順に並べ替えます。
// キーをリストとして取得 var val = d.Keys.ToList(); // 昇順にソート val.Sort();
3. 完全なサンプルコード
以下は、Dictionaryをキー順にソートして表示するまでの一連の処理をまとめた完全なサンプルコードです。
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("soccer", 1);
d.Add("cricket", 2);
d.Add("tennis", 3);
d.Add("rugby", 4);
// キーをリストとして取得
var val = d.Keys.ToList();
// 昇順にソート
val.Sort();
// ソート済みのキーを表示
foreach (var key in val) {
Console.WriteLine(key);
}
}
}出力結果
cricket rugby soccer tennis
補足:降順でソートしたい場合
降順(Z→A)で並べ替えたい場合は、Sort()の後にReverse()を呼び出すか、LINQのOrderByDescending()を使用します。
// LINQを使った降順ソートの例 var sortedDesc = d.Keys.OrderByDescending(k => k).ToList();
なお、Dictionary自体は要素の順序を保証しないため、順序が重要な場面では上記のようにキーを別途ソートして扱うのが基本のアプローチです。挿入順を保持したい場合は、.NET Core以降で利用可能なSortedDictionaryやSortedListの活用も検討するとよいでしょう。
-
Pythonの辞書(dict)に新しいキーと値を追加する方法
Pythonの辞書に新しいキーを追加する基本 Pythonの辞書(dict)は、キーと値のペアを格納するコレクションです。リストのような位置インデックスではなく、各要素はキーによって識別されます。また、同じキーを重複して持つことはできません。 そのため、新しいキー・値のペアを追加するのは非常に簡単です。存在しない新しいキーを指定し、そこに値を代入するだけで、自動的に新しいペアが辞書に追加されます。 コード例 >>> D1 = {1: a, 2: b, 3: c, x: 1, y: 2, z: 3} >>> D1[10] = z >>> D1
-
Windowsレジストリエディターでキーと値を追加・変更・削除する方法【初心者向け完全ガイド】
レジストリエディターは、Windowsパソコンの背骨とも呼ばれる重要な存在です。インストールされたプログラムやハードウェアに関する情報、設定、オプションなど、さまざまな値が格納されています。一般ユーザーがレジストリエディターを直接操作することはほとんどありませんが、Windowsの高度な設定に精通している上級者であれば、その扱い方を知っているはずです。 エラーを修正する際に、レジストリエディターでサブキーや値の追加・削除が必要になることがあります。しかし、「レジストリエディターでの変更を求められたら少し緊張する」という方は多いのではないでしょうか。「わずかなミスがシステム全体を壊し、パソコンを