根据另一个嵌套字典的最后一个值对字典排序



我有一个复杂的字典列表,其中包含其他字典。我需要根据最后一个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()

输出
[{'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}]}]

最新更新