gpt4 book ai didi

python - 按两个键对字典列表进行排序

转载 作者:行者123 更新时间:2023-12-03 15:27:24 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Sort list of dicts by multiple values [duplicate]

(1 个回答)


去年关闭。




我有这个字典列表:

[{'score': '1.9', 'id': 756, 'factors': [1.25, 2.25, 2.5, 2.0, 1.75]}, {'score': '2.0', 'id': 686, 'factors': [2.0, 2.25, 2.75, 1.5, 2.25]}, {'score': '2.0', 'id': 55, 'factors': [1.5, 3.0, 2.5, 1.5, 1.5]}, {'score': '1.9', 'id': 863, 'factors': [1.5, 3.0, 1.5, 2.5, 1.5]}]

我可以按分数排序: sorted(l, key=lambda k: k['score'], reverse=True) .但是我已经打平了分数。如何先按分数排序,然后按 id asc 或 desc 排序?

最佳答案

您可以按元组排序:

sorted(l, key=lambda k: (float(k['score']), k['id']), reverse=True)

这将按 score 排序降序,然后 id下降。请注意,由于 score是一个字符串值,需要转换为 float用于比较。
[
{'score': '2.0', 'id': 686, 'factors': [2.0, 2.25, 2.75, 1.5, 2.25]},
{'score': '2.0', 'id': 55, 'factors': [1.5, 3.0, 2.5, 1.5, 1.5]},
{'score': '1.9', 'id': 863, 'factors': [1.5, 3.0, 1.5, 2.5, 1.5]},
{'score': '1.9', 'id': 756, 'factors': [1.25, 2.25, 2.5, 2.0, 1.75]}
]

id 排序升序,使用 -k['id'] (对负数进行降序排序相当于对非负数进行升序排序):
sorted(l, key=lambda k: (float(k['score']), -k['id']), reverse=True)

[
{'score': '2.0', 'id': 55, 'factors': [1.5, 3.0, 2.5, 1.5, 1.5]},
{'score': '2.0', 'id': 686, 'factors': [2.0, 2.25, 2.75, 1.5, 2.25]},
{'score': '1.9', 'id': 756, 'factors': [1.25, 2.25, 2.5, 2.0, 1.75]},
{'score': '1.9', 'id': 863, 'factors': [1.5, 3.0, 1.5, 2.5, 1.5]}
]

关于python - 按两个键对字典列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62380562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com