gpt4 book ai didi

Python按值对深度嵌套的字典列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:51 25 4
gpt4 key购买 nike

我有一个这样结构的字典列表。

[
{
'id': 1,
'last_message': {
'sent_at': '2015-10-15T17:48:52.515Z',
'...' : '...'
},
'...' : '...',
},
{
'id': 2,
'last_message': {
'sent_at': '2015-10-15T17:45:52.515Z',
'...' : '...'
},
'...' : '...',
},
{
'id': 3,
'last_message': {
'sent_at': '2015-10-15T17:43:52.515Z',
'...' : '...'
},
'...' : '...',
}
]

并希望按 ['last_message']['sent_at'] 对列表进行排序。

我尝试像这样进行插入排序,但这会导致无限循环。

ret = []
for conversation in conversations:
if len(ret) > 1:
for conv in ret:
if conversation['last_message']['sent_at'] > conv['last_message']['sent_at']:
ret.insert(ret.index(conv), conversation)
continue
else:
ret.append(conversation)

我该怎么做才能实现这一目标?

最佳答案

您可以简单地使用带有key 参数的sorted() 方法来对字典列表进行排序。

此外,我建议在使用 datetime.datetime.strptime() 将字符串传递给 key 参数之前将字符串实际转换为 datetime 对象。

例子-

import datetime
result = sorted(conversations, key=lambda x: datetime.datetime.strptime(x['last_message']['sent_at'],'%Y-%m-%dT%H:%M:%S.%fZ'))

演示 -

>>> conversations = [
... {
... 'id': 1,
... 'last_message': {
... 'sent_at': '2015-10-15T17:48:52.515Z',
... '...' : '...'
... },
... '...' : '...',
... },
... {
... 'id': 2,
... 'last_message': {
... 'sent_at': '2015-10-15T17:45:52.515Z',
... '...' : '...'
... },
... '...' : '...',
... },
... {
... 'id': 3,
... 'last_message': {
... 'sent_at': '2015-10-15T17:43:52.515Z',
... '...' : '...'
... },
... '...' : '...',
... }
... ]
>>>
>>> import datetime
>>> result = sorted(conversations, key=lambda x: datetime.datetime.strptime(x['last_message']['sent_at'],'%Y-%m-%dT%H:%M:%S.%fZ'))
>>> pprint.pprint(result)
[{'...': '...',
'id': 3,
'last_message': {'...': '...', 'sent_at': '2015-10-15T17:43:52.515Z'}},
{'...': '...',
'id': 2,
'last_message': {'...': '...', 'sent_at': '2015-10-15T17:45:52.515Z'}},
{'...': '...',
'id': 1,
'last_message': {'...': '...', 'sent_at': '2015-10-15T17:48:52.515Z'}}]

关于Python按值对深度嵌套的字典列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156633/

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