配列の要素が辞書型の場合のソートの仕方をまとめました。 lambdaを使うと任意のkeyでソートできます。 書き方もシンプルです。
業務では、API連携で受け取ったデータを処理するときに使っています。
2次元配列のソートはこちらで解説しています。2次元配列をソートした結果(昇順・降順・逆順) | Python
動作確認:Python 3.7
ソートする配列
本題の前にソートする配列の一例をお見せします。
arr = [{'name': 'takahashi', 'age': 32}, {'name': 'kikuchi', 'age': 43}, {'name': 'watanabe', 'age': 22}]
このように、文字列と数値を持ったdictを要素に持つ配列です。
arr = [
{'name': 'takahashi', 'age': 32},
{'name': 'kikuchi', 'age': 43},
{'name': 'watanabe', 'age': 22}
]
要素がdict型の配列をソート sorted()
lambdaを使うとdict型も任意のkeyでソートできる。
arr = [
{'name': 'takahashi', 'age': '32'},
{'name': 'kikuchi', 'age': '43'},
{'name': 'watanabe', 'age': '22'}]
# ageで昇順
print(sorted(arr, key=lambda x: x['age']))
"""
[{'name': 'watanabe', 'age': '22'}, {'name': 'takahashi', 'age': '32'}, {'name': 'kikuchi', 'age': '43'}]
"""
# nameで昇順
print(sorted(arr, key=lambda x: x['name']))
"""
[{'name': 'kikuchi', 'age': '43'}, {'name': 'takahashi', 'age': '32'}, {'name': 'watanabe', 'age': '22'}]
"""
sorted()の引数keyにdictのkeyを参照させます。
やり方はkey=lambda x: x['age']
とする。
sort()
sort()
も同様です。
# ageで昇順
arr.sort(key=lambda x: x['age'])
print(arr)
"""
[{'name': 'watanabe', 'age': '22'}, {'name': 'takahashi', 'age': '32'}, {'name': 'kikuchi', 'age': '43'}]
"""
降順
reverse=True
で降順になります。
# ageで降順
arr.sort(key=lambda x: x['age'], reverse=True)
print(arr)
"""
[{'name': 'watanabe', 'age': '22'}, {'name': 'takahashi', 'age': '32'}, {'name': 'kikuchi', 'age': '43'}]
"""
あわせてどうぞ
2次元配列のソートの実行結果をまとめました。
2次元配列をソートした結果(昇順・降順・逆順) | Python
コピペで実行できるよう、Pythonの書き方をまとめてあります。
Python:ファイルダウンロードの進行状況とファイルサイズを表示する方法。urllib
Pythonschedule2024-02-27
【Python】tqdmでforの進捗状況を表示する
PythonColabolatoryschedule2021-02-16
学習済みの日本語単語ベクトルをColabolatoryで試してみる
自然言語処理PythonColabolatoryschedule2021-02-04
Unity ML-Agentsで新しく学習環境を作る
Unity機械学習C#PythonDeepLearningschedule2021-01-22
27. 内部リンクの除去
自然言語処理100本ノックPythonschedule2020-03-17