Python:辞書リストの並べ替え

 参照: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 :はリストの並べ替えの基準です。通常、関数をカスタマイズして並べ替えの基準を返し、関数名をキーにバインドできます。

     reversereverseとして変換され、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をバインドせずに順序を並べ替えます。辞書は、順序を自動的にシャッフルします。

 

 

おすすめ

転載: blog.csdn.net/weixin_38676276/article/details/108670611