gpt4 book ai didi

Python 对字典值进行排序

转载 作者:行者123 更新时间:2023-11-30 23:15:04 25 4
gpt4 key购买 nike

我收到了来自网络请求的响应:

{'Changes': [{'StartColumn': 34, 'StartLine': 8, 'EndLine': 8, 'NewText': '\n        ', 'EndColumn': 34}, {'StartColumn': 13, 'StartLine': 9, 'EndLine': 9, 'NewText': '', 'EndColumn': 17}, {'StartColumn': 13, 'StartLine': 10, 'EndLine': 10, 'NewText': '', 'EndColumn': 17}]}

在我的 Python 字典中,我可以通过 data['Changes'] 访问该值,并且可以循环遍历每个项目。

我想做的是按 EndLine 降序排列 Changes 的值。我用 Reverse=True 查看了 Sorted,但无法让它工作。

有什么指点吗?

最佳答案

您可以对键“Changes”的值(列表)进行排序。

我的猜测是您当前对整个字典进行排序,这就是它不起作用的原因。

In [1]: d = {'Changes': [{'StartColumn': 34, 'StartLine': 8, 'EndLine': 8, 'NewText': '\n        ', 'EndColumn': 34}, {'StartColumn': 13, 'StartLine': 9, 'EndLine': 9, 'NewText': '', 'EndColumn': 17}, {'StartColumn': 13, 'StartLine': 10, 'EndLine': 10, 'NewText': '', 'EndColumn': 17}]}

In [2]: d["Changes"] = sorted(d["Changes"], key= lambda x: x["EndLine"], reverse=True)

In [3]: d["Changes"]
Out[3]:
[{'EndColumn': 17,
'EndLine': 10,
'NewText': '',
'StartColumn': 13,
'StartLine': 10},
{'EndColumn': 17,
'EndLine': 9,
'NewText': '',
'StartColumn': 13,
'StartLine': 9},
{'EndColumn': 34,
'EndLine': 8,
'NewText': '\n ',
'StartColumn': 34,
'StartLine': 8}]

正如 @Andrea 指出的,在这种情况下,我们可以使用 .sort() 就地执行此操作,并消除创建新列表的开销

In [4]: d = {'Changes': [{'StartColumn': 34, 'StartLine': 8, 'EndLine': 8, 'NewText': '\n        ', 'EndColumn': 34}, {'StartColumn': 13, 'StartLine': 9, 'EndLine': 9, 'NewText': '', 'EndColumn': 17}, {'StartColumn': 13, 'StartLine': 10, 'EndLine': 10, 'NewText': '', 'EndColumn': 17}]}

In [5]: d["Changes"].sort(key=lambda x: x["EndLine"], reverse=True)

In [6]: d["Changes"]
Out[6]:
[{'EndColumn': 17,
'EndLine': 10,
'NewText': '',
'StartColumn': 13,
'StartLine': 10},
{'EndColumn': 17,
'EndLine': 9,
'NewText': '',
'StartColumn': 13,
'StartLine': 9},
{'EndColumn': 34,
'EndLine': 8,
'NewText': '\n ',
'StartColumn': 34,
'StartLine': 8}]

关于Python 对字典值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452310/

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