Python - 按字典的字典值对字典列表进行排序

3

我有一个如下所示的列表:

persons = [{'id': 11, 'passport': {'id': 11, 'birth_info':{'date': 10/10/2016...}}},{'id': 22, 'passport': {'id': 22, 'birth_info':{'date': 11/11/2016...}}}]

我需要按照人员的出生日期子键对人员列表进行排序。

应该如何操作? 谢谢。


1
你在 personslist 中有一个 dict - metatoaster
那就对了,我的朋友。 - Oz Bar-Shalom
1
你应该修复你的样本数据:那些日期字符串需要加引号,以使列表合法Python(和合法JSON)。 - PM 2Ring
2个回答

6

sorted()函数提供了key参数。可以定义一个可调用对象,返回用于比较元素的键:

sorted(persons, key=lambda x: x['passport']['birth_info']['date'])

参数x是给定人员列表中的一个项目。

如果日期是字符串,则可以使用datetime模块:

sorted(persons, key=lambda x: datetime.datetime.strptime(x['passport']['birth_info']['date'], '%m/%d/%Y'))

1
排序还是已排序? - Oz Bar-Shalom

2

试试这个

from datetime import datetime


print(sorted(persons, key=lambda x: datetime.strptime(x['passport']['birth_info']['date'], "%d/%m/%Y"))) #reverse=True for descending order.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接