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

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

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

Python で辞書を操作しているとき、その内容をキーまたは値で並べ替える必要がある場合があります。 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 辞書をキーまたは値で並べ替える方法
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 辞書をキーまたは値で並べ替える方法

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 辞書をキーまたは値で並べ替える方法
Python 辞書をキーまたは値で並べ替える方法

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

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

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

Python で辞書を操作しているとき、その内容をキーまたは値で並べ替える必要がある場合があります。 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 辞書をキーまたは値で並べ替える方法
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 辞書をキーまたは値で並べ替える方法

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 辞書をキーまたは値で並べ替える方法
Python 辞書をキーまたは値で並べ替える方法

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

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