Python で辞書をキーで並べ替える方法
Azaz Farooq
2023年10月10日
Python
Python Dictionary
-
Python で辞書をキーでソートする
dict.keys()
メソッド -
Python の
dict.items()
メソッドで辞書をキーでソートする -
Python の
OrderedDict()
メソッドで辞書をキーでソートする - Python で辞書を逆順に並べ替える
-
カスタム
key
関数メソッドを用いた Python の辞書のソート

Python の辞書は、キーのハッシュを評価してエントリを保持するハッシュテーブルと同じで、エントリの並びが予想できません。この記事では、Python で辞書をキーでソートする方法を紹介します。
Python で辞書をキーでソートする dict.keys()
メソッド
以下の辞書を例にしてみよう。
Python
pythonCopydict = {"hello": 56, "at": 23, "test": 43, "this": 43}
dict.keys()
の出力は
Python
pythonCopydict_keys(["hello", "at", "test", "this"])
この順序のないキーのリストから、新しい順序付きの辞書を作ることができます。
Python
pythonCopysorted(dict.keys())
出力:
textCopy['at', 'hello', 'test', 'this']
辞書から各エントリを選択することで、この順序付きリストにソートを繰り返し適用します。
Python
pythonCopyfor key in sorted(dict.keys()):
print(key, " :: ", dict[key])
出力:
textCopyat :: 23
hello :: 56
test :: 43
this :: 43
Python の dict.items()
メソッドで辞書をキーでソートする
Python の dict.items()
メソッドを使って辞書をキーでソートすることもできます。
これはキーと値のペアを保持するリストを生成します。
Python
pythonCopydict.items()
出力:
textCopydict_items([('hello', 56), ('at', 23), ('test', 43), ('this', 43)])
以下の関数で整理リストを作成することができます。辞書のエントリをキーの値に応じてソートしてくれる。
Python
pythonCopysorted(dict.keys())
出力:
textCopy['at', 'hello', 'test', 'this']
さて、辞書からソートされたキーと値のペアを生成するには、次のコードを使用します。
Python
pythonCopyfor elem in sorted(dict.items()):
print(elem[0], " ::", elem[1])
出力:
textCopyat :: 23
hello :: 56
test :: 43
this :: 43
複雑さの点では、前のアプローチよりも強力です。dict.key()
のように、反復可能なリストをソートした後にキー値をチェックする必要がないからです。
Python の OrderedDict()
メソッドで辞書をキーでソートする
あるいは、collections
モジュールを使って辞書の項目をキー値でソートすることもできます。
Python
pythonCopyimport collections
d = {2: 13, 1: 9, 4: 25, 3: 0}
result = collections.OrderedDict(sorted(d.items()))
print(result)
出力:
textCopyOrderedDict([(1, 9), (2, 13), (3, 0), (4, 25)])
Python で辞書を逆順に並べ替える
前回までは、辞書の項目を昇順に並べ替えました。今回は、辞書の項目を降順に並べ替える方法について説明します。
構文は以下の通りです。
Python
pythonCopysorted(iterable_sequence, reverse=True)
以下のコードは、辞書の項目をソートして反転させる。
Python
pythonCopydict = {"hello": 56, "at": 23, "test": 43, "this": 43}
for elem in sorted(dict.items(), reverse=True):
print(elem[0], " ::", elem[1])
パラメータ reverse=true
は、ソートされた辞書が反転されることを確認します。
出力:
textCopythis :: 43
test :: 43
hello :: 56
at :: 23
カスタム key
関数メソッドを用いた Python の辞書のソート
このメソッドは key
の文字列の長さを用いて辞書の項目をソートします。
Python
pythonCopysorted(iterable_sequence, key=Function)
パラメータ key
には文字列のサイズを返す関数 lambda
が与えられます。
Python
pythonCopylistofTuples = sorted(dict.items() , key=lambda x: len (x[0] ) )
for elem in listofTuples :
print(elem[0] , " ::" , elem[1] )
出力:
textCopyat :: 23
test :: 43
this :: 43
hello :: 56
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe