簡體   English   中英

根據另一個嵌套字典的最后一個值,用字典對 python 列表進行排序

[英]Sort python list with dictionaries based on the last value of another nested dictionary

我有一個復雜的列表,其中包含由其他詞典組成的詞典。 我需要根據最后一個y值對以下列表進行排序,以便美元數據排在澳元數據之后。 USD 的最后一個值是 4,AUD 的最后一個值是 3,所以 USD 應該是列表中的第一個字典,AUD 應該是列表中的第二個字典。

我將不勝感激有關如何實現這一目標的任何建議。

這是原始列表:

[
     {
      "instrument": "AUD",
      "changes": [
                  {"x": 1632765600000, "y": 0},
                  {"x": 1632769200000, "y": 1},
                  {"x": 1632772800000, "y": 2},
                  {"x": 1632776400000, "y": 3},
      ]
     },
     {
      "instrument": "USD",
      "changes": [
                  {"x": 1632765600000, "y": 0},
                  {"x": 1632769200000, "y": 2},
                  {"x": 1632772800000, "y": 3},
                  {"x": 1632776400000, "y": 4},
      ]
     },
]

這是我願意得到的結果:

[
     {
      "instrument": "USD",
      "changes": [
                  {"x": 1632765600000, "y": 0},
                  {"x": 1632769200000, "y": 2},
                  {"x": 1632772800000, "y": 3},
                  {"x": 1632776400000, "y": 4},
      ]
     },
     {
      "instrument": "AUD",
      "changes": [
                  {"x": 1632765600000, "y": 0},
                  {"x": 1632769200000, "y": 1},
                  {"x": 1632772800000, "y": 2},
                  {"x": 1632776400000, "y": 3},
      ]
     },
]

見下文(使用lambda作為密鑰)

data = [
     {
      "instrument": "AUD",
      "changes": [
                  {"x": 1632765600000, "y": 0},
                  {"x": 1632769200000, "y": 1},
                  {"x": 1632772800000, "y": 2},
                  {"x": 1632776400000, "y": 3},
      ]
     },
     {
      "instrument": "USD",
      "changes": [
                  {"x": 1632765600000, "y": 0},
                  {"x": 1632769200000, "y": 2},
                  {"x": 1632772800000, "y": 3},
                  {"x": 1632776400000, "y": 4},
      ]
     }
]

data = sorted(data, key = lambda x : x['changes'][-1]['y'],reverse=True)
print()
print(data)
print()

output

[{'instrument': 'USD', 'changes': [{'x': 1632765600000, 'y': 0}, {'x': 1632769200000, 'y': 2}, {'x': 1632772800000, 'y': 3}, {'x': 1632776400000, 'y': 4}]}, {'instrument': 'AUD', 'changes': [{'x': 1632765600000, 'y': 0}, {'x': 1632769200000, 'y': 1}, {'x': 1632772800000, 'y': 2}, {'x': 1632776400000, 'y': 3}]}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM