このチュートリアルでは、Python 辞書をキーまたは値で並べ替える方法を学習します。
Python で辞書を操作しているとき、その内容をキーまたは値で並べ替える必要がある場合があります。 Python 辞書はキーと値のマッピングであるため、必要に応じてキーまたは値が並べ替えられた新しい辞書を作成します。
このチュートリアルでは、Python 辞書の基本を復習することから始めます。次に、必要に応じてコンテンツをキーまたは値で並べ替える新しい辞書を作成する方法を学習します。
![Python 辞書をキーまたは値で並べ替える方法](https://i.gyazo.com/3246569fdcf6267086baf4d2842422c5.png)
Python 辞書の基本、再考
![Python 辞書をキーまたは値で並べ替える方法](https://i.gyazo.com/37d18956509707278c6d99685d44cea4.png)
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 辞書をキーまたは値で並べ替える方法](https://www.sejuku.net/blog/wp-content/uploads/2017/06/python_dict.jpg)
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 辞書をキーまたは値で並べ替える方法](https://code-graffiti.com/wp-content/uploads/2018/08/dictfunc.jpg)
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 辞書をキーまたは値で並べ替える方法](https://assam-blog.com/wp-content/uploads/2022/08/python-basis-dictionary-768x403.jpg)