Pythonでディクショナリを値でソートする方法
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
sorted()
とラムダを使用して、値でディクショナリをソートします。- 降順でソートするには、
reverse=True
を設定します。 - 古いPythonバージョンでは、順序を維持するために
OrderedDict
を使用します。
Pythonでディクショナリを値でソートすることは、特に関連する値に基づいてデータをランク付けまたは整理する必要がある場合に、一般的なタスクです。このガイドでは、昇順および降順のソートの両方をカバーして、これを実現するためのさまざまな方法について説明します。
Pythonディクショナリの理解
Pythonのディクショナリは、キーと値のペアの順序付けられていないコレクションです。ディクショナリはPython 3.7以降の挿入順序を保持しますが、直接ソートはサポートしていません。ディクショナリをその値でソートするには、ソートされた新しい表現を作成する必要があります。
ディクショナリを昇順で値でソートする
ディクショナリを昇順で値でソートするには、sorted()
関数をラムダ関数とともに使用します。
student_scores = { 'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85 } sorted_scores = dict(sorted(student_scores.items(), key=lambda item: item[1])) print(sorted_scores)
出力:
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}
この例では:
student_scores.items()
は、ディクショナリの項目のビューオブジェクトを返します。sorted()
は、各タプルの2番目の要素(つまり、値)に基づいてこれらの項目をソートします。dict()
は、ソートされたタプルのリストをディクショナリに変換し直します。
ディクショナリを降順で値でソートする
ディクショナリを降順でソートするには、sorted()
関数のreverse
パラメーターをTrue
に設定します。
sorted_scores_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True)) print(sorted_scores_desc)
出力:
{'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}
このアプローチは、上位のパフォーマーまたは最大値を特定する必要がある場合に役立ちます。
operator.itemgetter
を使用した別の方法
ディクショナリを値でソートする別の方法は、operator
モジュールのitemgetter
関数を使用することです。
import operator sorted_scores = dict(sorted(student_scores.items(), key=operator.itemgetter(1))) print(sorted_scores)
この方法は、特により複雑なソートシナリオを扱う場合に、より効率的で読みやすくなる可能性があります。
古いPythonバージョンの考慮事項
Python 3.7より前のバージョンでは、ディクショナリは挿入順序を保持しません。このような場合にソートされた順序を維持するには、collections
モジュールのOrderedDict
を使用できます。
from collections import OrderedDict sorted_scores = OrderedDict(sorted(student_scores.items(), key=lambda item: item[1])) print(sorted_scores)
これにより、項目の順序がソートどおりに維持されます。
概要
- 昇順: ラムダ関数または
operator.itemgetter(1)
でsorted()
を使用します。 - 降順:
sorted()
関数でreverse=True
を設定します。 - 古いPythonバージョン: ソートされた順序を維持するために
OrderedDict
を使用します。
これらの方法を適用することにより、さまざまなデータ処理のニーズを満たすために、ディクショナリをそれらの値で効果的にソートできます。
FAQs
いいえ、ディクショナリは順序に関して不変です。ソートは新しいディクショナリを返します。
元の挿入順序は、同じ値を持つキーに対して保持されます。
itemgetter
は、インデックスでソートする場合にわずかに高速でクリーンになる可能性があります。
Pythonプロジェクトをホストするための最高の選択肢であるLeapcellです。
Leapcellは、Webホスティング、非同期タスク、およびRedis用の次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ支払います—リクエストはなく、料金もありません。
他にはない費用対効果
- アイドル料金なしで従量課金制。
- 例:25ドルで、平均応答時間60msで694万件のリクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI / CDパイプラインとGitOps統合。
- 実用的な洞察のためのリアルタイムメトリックとロギング。
簡単なスケーラビリティとハイパフォーマンス
- 高い並行処理を簡単に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ—構築に集中するだけです。
ドキュメントで詳細をご覧ください!
Xでフォローしてください:@LeapcellHQ