Pythonで辞書(dict)をキーまたは値でソートする方法
Pythonでは、辞書(dict)の要素をキーまたは値に基づいて並べ替えたい場面がよくあります。組み込み関数 sorted() を使えば、辞書のキーを昇順にソートしながら、対応する値と一緒に出力できます。まずは辞書を定義し、キーと値のペアを挿入してから、for ループで反復処理を行う基本的な方法を見ていきましょう。
サンプルコード
def my_dict():
my_key_value_pair = {}
my_key_value_pair[2] = 56
my_key_value_pair[1] = 2
my_key_value_pair[5] = 12
my_key_value_pair[4] = 24
my_key_value_pair[6] = 18
my_key_value_pair[3] = 323
print("キーを基準にソートした後のキーと値:")
for i in sorted(my_key_value_pair):
print((i, my_key_value_pair[i]))
my_dict()
実行結果
キーを基準にソートした後のキーと値: (1, 2) (2, 56) (3, 323) (4, 24) (5, 12) (6, 18)
解説
最初に、空の辞書を変数に代入するメソッドを定義します。
空の辞書に対してキー(インデックス)を指定し、そこへ各要素を代入していきます。
sorted()関数を使って辞書のキーを昇順に取り出し、対応する値とセットでコンソールに表示します。最後にメソッドを呼び出すことで、一連の処理が実行され、結果が出力されます。
なお、リストに使う sort() メソッドとは異なり、辞書そのものには sort() がないため、新しいソート済みのシーケンスを返す sorted() を使うのがポイントです。
値を基準にソートする場合
値で並べ替えたいときは、items() メソッドと lambda 式を組み合わせます。
for key, value in sorted(my_key_value_pair.items(), key=lambda x: x[1]):
print((key, value))
このように key=lambda x: x[1] を指定すると、タプルの2番目の要素(=値)を基準にソートされます。降順にしたい場合は reverse=True を引数に追加するだけで対応できます。
-
Pythonの辞書(dict)を値で並べ替える方法
Pythonの辞書を値でソートする基本 Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書のサブクラスで、要素が追加された順序を記憶できるのが特徴です。順序付き辞書を反復処理すると、キーが最初に追加された順番どおりに項目が返されます。 >>> from collections import OrderedDict >>> D = {5:fff, 3:ttt, 1:ooo, 4:bbb, 2:ddd} >>> OrderedDict
-
Pythonの辞書(dict)の使い方を徹底解説!作成・取得・追加・削除の基本
辞書(Dictionary)は、Pythonで最もよく使われるマッピング型です。キーと値のペアでデータを管理できるため、JavaのMapに似たオブジェクトだと言えます。 Pythonでは、波括弧 {} を使って辞書リテラルを作成します。キーと値はコロン : で結び、各ペアはカンマ , で区切ります。 辞書の作成方法 まずは、基本的な辞書の作成例を見てみましょう。 datedict = { date: 13, month: January, year: 1970 } print(datedict) 実行結果: {date: 13, month: January, year: 197