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

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 を引数に追加するだけで対応できます。

  1. Pythonの辞書(dict)を値で並べ替える方法

    Pythonの辞書を値でソートする基本 Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書のサブクラスで、要素が追加された順序を記憶できるのが特徴です。順序付き辞書を反復処理すると、キーが最初に追加された順番どおりに項目が返されます。 >>> from collections import OrderedDict >>> D = {5:fff, 3:ttt, 1:ooo, 4:bbb, 2:ddd} >>> OrderedDict

  2. Pythonの辞書(dict)の使い方を徹底解説!作成・取得・追加・削除の基本

    辞書(Dictionary)は、Pythonで最もよく使われるマッピング型です。キーと値のペアでデータを管理できるため、JavaのMapに似たオブジェクトだと言えます。 Pythonでは、波括弧 {} を使って辞書リテラルを作成します。キーと値はコロン : で結び、各ペアはカンマ , で区切ります。 辞書の作成方法 まずは、基本的な辞書の作成例を見てみましょう。 datedict = { date: 13, month: January, year: 1970 } print(datedict) 実行結果: {date: 13, month: January, year: 197