ホーム テクノロジー 開発 非公開: Python 辞書をキーまたは値で並べ替える方法

Python 辞書をキーまたは値で並べ替える方法


このチュートリアルでは、Python 辞書をキーまたは値で並べ替える方法を学習します。

Python で辞書を操作しているとき、その内容をキーまたは値で並べ替える必要がある場合があります。 Python 辞書はキーと値のマッピングであるため、必要に応じてキーまたは値が並べ替えられた新しい辞書を作成します。

このチュートリアルでは、Python 辞書の基本を復習することから始めます。次に、必要に応じてコンテンツをキーまたは値で並べ替える新しい辞書を作成する方法を学習します。

Python 辞書の基本、再考

Python辞書とは何ですか?

辞書は Python の組み込みデータ構造です。項目をキーと値のペアとして保存します。キーを使用して、対応する値を検索できます。キーは値を一意に識別するため、キーを繰り返してはいけません。

 py_dict = {"Python":"cool!","Learn":True}
py_dict["Python"]
# Output: cool!

py_dict["Learn"]
# Output: True

機能的には、辞書はハッシュ マップに似ています。したがって、必ずしも順序付けられたデータ構造である必要はありません。キーを知っていれば、辞書の内容に任意の順序でアクセスできます。

辞書内の項目の順序付け

Python の以前のバージョンでは、キーの順序を保持するにはOrderedDictを使用する必要がありました。ただし、Python 3.7 以降では、辞書に項目を追加したのと同じ順序で項目にアクセスできるようになりました。

Python 辞書の基本を学習したので、辞書のソートされたコピーを作成する方法を学びましょう。

⚙️: このチュートリアルのコードが期待どおりに動作するには、Python 3.7 以降が必要です。 最新バージョンの Python をダウンロードすることも、 オンライン Python エディターでサンプルを実行することもできます。

Python 辞書をキーで並べ替える方法

次のカフェのデザート メニューの画像を見てください。メニューの項目とそれぞれの価格に対応する 2 つの列があります。

アイテムの名前をキーとして収集し、その価格を値として収集することで、これを Python 辞書の形式で表すことができます。

次に示すように、辞書desserts作成しましょう。

 desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}

次に、デザートをアルファベット順に並べた辞書sorted_dessertsを作成しましょう。オリジナルのdesserts辞典では、デザートの名前がキーになっています。したがって、新しい辞書を作成するには、これらのキーをアルファベット順に並べ替える必要があります。

Python 辞書のキーにアクセスする方法

これを行うには、まず辞書のキーを取得し、それをアルファベット順に並べ替えます。

Python では、組み込みの辞書メソッド.keys()を使用して、辞書内のすべてのキーのリストを取得できます。

以下に示すように、 dessert辞書で.keys()メソッドを呼び出してキーを取得しましょう。

 keys = desserts.keys()
print(keys)

#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 
'Cup cake']

引数としてリストを指定して Python の組み込みのsorted()関数を呼び出すと、新しいソートされたリストが返されます。

次に、引数としてリストのkeys指定してsorted()関数を呼び出し、ソートされたリストを変数sorted_keysに格納しましょう。

 sorted_keys = sorted(keys)
print(sorted_keys)

# Output
['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']

キーがアルファベット順にソートされたので、以下に示すように、 sorted_keysのキーに対応する値をdesserts辞書から検索できます。

 sorted_desserts = {}
for key in sorted_keys:
  sorted_desserts[key] = desserts[key]

print(sorted_desserts)

# Output
{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 
'Ice cream': 10, 'Swiss roll': 5}

上記のコード ブロックを拡張してみましょう。

  • sorted_desserts空の Python 辞書になるように初期化します。
  • キーリストsorted_keysをループします。
  • sorted_keysのキーごとに、 dessertsディクショナリで対応する値を検索して、 sorted_dessertsにエントリを追加します。

このようにforループを使用すると、冗長とみなされます。 Python には、辞書内包表記を使用したより簡潔な代替手段があります。

Python での辞書の理解

Python は、リスト内包表記と同様に、辞書内包表記の使用をサポートしています。辞書内包表記を使用すると、たった 1 行のコードで新しい Python 辞書を作成できます。

▶️ Python で辞書内包表記を使用するための一般的な構成は次のとおりです。

 # 1. when you have both keys and values in two lists: list1, list2
new_dict = {key:value for key,value in zip(list1,list2)}

# 2. when you have the keys, and can look up the values
new_dict = {key:value for key in <iterable>}

上記のセルの 2 番目の構成体new_dict = {key:value for key in <iterable>}を使用して、 sorted_desserts辞書を作成しましょう。

この例では:

  • iterable : リストsorted_keys
  • key :sorted_keys をループすることでアクセスするキー
  • value : デザート辞書からキーに対応する値を検索します、 desserts[key]

これらをまとめると、以下のような辞書理解の式が得られます。

 sorted_desserts = {key:desserts[key] for key in sorted_keys}
print(sorted_desserts)

{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 
'Ice cream': 10, 'Swiss roll': 5}

上記の出力から、デザートはsorted_dessertsディクショナリ内でアルファベット順に並べられています。

Python 辞書を値で並べ替える方法

次に、Python 辞書を値で並べ替える方法を学びます。

desserts辞書では、値はデザートの価格に対応します。辞書を価格の昇順または降順に並べ替えることができます。

▶️ 組み込みの辞書メソッド.items()を使用して、すべてのキーと値のペアを取得できます。各タプルはキーと値のペアです。

 desserts.items()

dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3), 
('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])

各項目はそれ自体がタプルです。したがって、各キーと値のペアにインデックスを付けて、キーと値に個別にアクセスすることもできます。

 dict_items = desserts.items()
for item in dict_items:
  print(f"key:{item[0]},value:{item[1]}")

# Output
key:Ice cream,value:10
key:Brownies,value:12
key:Cheesecake,value:3
key:Swiss roll,value:5
key:Cookies,value:4
key:Cup cake,value:2

値で並べ替えたいので、上記のメソッドを使用して、キーと値のペアのインデックス 1 の値を取得します。

Python 辞書の値を昇順に並べ替える方法

今回は、 sorted()関数とオプションのkeyパラメーターを使用します。 keyには、任意の Python 関数、組み込み関数、ユーザー定義関数、またはラムダ関数を指定できます。

: lambda args: expression Python でラムダ関数を定義するための構文です。

デザートを価格で並べ替えるこの例では、辞書項目 (キーと値のペア) にアクセスできます。値 (価格) で並べ替えたいのでkey = lambda item:item[1]を設定します。

sorted()関数はデフォルトでリストを返すため、以下に示すように、リストを明示的にdictにキャストする必要があります。

 sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1]))
print(sorted_desserts)

{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 
'Ice cream': 10, 'Brownies': 12}

前に説明したように、辞書内包表記を使用して書き直すこともできます。

 sorted_desserts = {key:value for key, value in sorted(desserts.items(), 
key=lambda item:item[1])}

print(sorted_desserts)

# Output
{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 
'Ice cream': 10, 'Brownies': 12}

sorted_dessertsでは、2 ドルのCup Cake最初の品目で、12 ドルのBrowniesが最後の品目です。

Python 辞書の値を降順に並べ替える方法

価格を降順に並べ替えたい場合は、以下で説明するように、オプションの reverse パラメーターをTrueに設定できます。

 sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1], 
reverse=True))
print(sorted_desserts)

# Output
{'Brownies': 12, 'Ice cream': 10, 'Swiss roll': 5, 'Cookies': 4, 
'Cheesecake': 3, 'Cup cake': 2}

ここで、 sorted_desserts 、12 ドルの最も高価なデザートのBrowniesから始まる、価格の降順に並べ替えられています。

まとめ 👩🏽‍💻

このチュートリアルで学んだことをすべて簡単にまとめてみましょう。

  • Python ディクショナリは、データをキーと値のペアで保存します。キーはすべて一意である必要があります。
  • キーまたは値で辞書を並べ替えるプロセスでは、必要に応じて並べ替えられる新しい辞書を作成します。
  • 組み込みの辞書メソッド.keys().items()を使用して、それぞれすべてのキーとキーと値のペアを取得できます。
  • 必要な並べ替えを行うには、 sorted()関数をオプションのパラメーターkeyおよびreverseとともに使用できます。

Python 辞書を並べ替える方法を学習したので、次は Python リストを並べ替える方法を学習します。コーディングを楽しんでください!🎉

「 Python 辞書をキーまたは値で並べ替える方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonのリストなどを並び替える方法|sorted
【毎日Python】Pythonで辞書のキーを取得|dict.keys