参照:https://www.runoob.com/python3/python-sort-dictionaries-by-key-or-value.html
if __name__ == '__main__':
list = []
for i in range(10):
dict_time = {"time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
list.append(dict_time)
time.sleep(1)
print(list)
print(sorted(list, key=lambda i: i['time'], reverse=True))
sort()関数はすべての反復可能なオブジェクトをソートし、キーは比較に使用される要素です
Lambdaは無名関数に使用されます。これは固定された表現であり、他の単語を記述しないでください
iはリスト内の要素を表します。ここでは、辞書を表します。iは単なる一時的な名前であり、任意の名前を使用できます。コマンドi ['time']は、リスト辞書の「時間」に従うことを意味します。デフォルトの昇順、reverse = Trueは降順を意味します
上記のコードの出力:
[{'time': '2020-09-18 18:04:08'}, {'time': '2020-09-18 18:04:09'}, {'time': '2020-09-18 18:04:10'}, {'time': '2020-09-18 18:04:11'}, {'time': '2020-09-18 18:04:12'}, {'time': '2020-09-18 18:04:13'}, {'time': '2020-09-18 18:04:14'}, {'time': '2020-09-18 18:04:15'}, {'time': '2020-09-18 18:04:16'}, {'time': '2020-09-18 18:04:17'}]
[{'time': '2020-09-18 18:04:17'}, {'time': '2020-09-18 18:04:16'}, {'time': '2020-09-18 18:04:15'}, {'time': '2020-09-18 18:04:14'}, {'time': '2020-09-18 18:04:13'}, {'time': '2020-09-18 18:04:12'}, {'time': '2020-09-18 18:04:11'}, {'time': '2020-09-18 18:04:10'}, {'time': '2020-09-18 18:04:09'}, {'time': '2020-09-18 18:04:08'}]
ソートされたソート方法の詳細な説明は次のとおりです:(ありがとう:https://blog.csdn.net/cxcxrs/article/details/82459800#%E4%B8%80%E3%80%81sorted%E9%AB%98 %E9%98%B6%E5%87%BD%E6%95%B0)
1. ソートされた高階関数の構文形式: ソート済み(反復可能なオブジェクト、key =関数名、reverse = False / True)
機能:反復可能なオブジェクトから、1つの要素が順番に取り出され、要素はキーで指定された配置基準に従ってソートされます。
反復可能なオブジェクト:コレクション、シーケンス(リスト、文字列、タプル)、辞書など、値を順番に取得できるオブジェクト
key :はリストの並べ替えの基準です。通常、関数をカスタマイズして並べ替えの基準を返し、関数名をキーにバインドできます。
reverse:reverseとして変換され、reverseはデフォルトでFalseに等しく、小さいものから大きいものにソートされます。Trueの場合、大きいものから小さいものへと並べ替えます。
2. 無名関数ラムダの形式: 関数名=ラムダ[仮パラメーター1、仮パラメーター2、...]:、 操作ステートメントブロックの結果を返し、関数名にバインドします。
例: key = lambda x:x [1]
X:タプルのセットに対応する辞書。例:dict_items([( 'a' 、1)、( 'c'、3)、( 'b'、2)]) in ( 'a'、 1)または( 'c'、3)または( 'b'、2)
x [1]:キーと値のペアのタプルの値であるxの2番目の要素を返します。dict_items([( 'a'、1)、( 'c'、3)、( 'b'、2)])1または2または3
注意:
(1) ソートされた関数の反復可能オブジェクトにディクショナリdを使用しないでください。これにより、ディクショナリdのキーのみが反復可能になります。ディクショナリのキーと値のペアを反復処理する場合にのみ、d.items()を使用してください。
例:d_order = sorted(d、key = lambda x:x [1]、reverse = False)は使用できません
要用d_order = sorted(d.items()、key = lambda x:x [1]、reverse = False)
(2) ソートされた関数がソートされた後、オブジェクトをバインドする必要があります(割り当て)。例:d_order = sorted(d.items()、key = lambda x:x [1]、reverse = False)。
ディクショナリは順序付けされていないタイプであるため、sorted関数を使用して、d_orderをバインドせずに順序を並べ替えます。辞書は、順序を自動的にシャッフルします。