我有一个如下所示的列表:
persons = [{'id': 11, 'passport': {'id': 11, 'birth_info':{'date': 10/10/2016...}}},{'id': 22, 'passport': {'id': 22, 'birth_info':{'date': 11/11/2016...}}}]
我需要按子键的子键 - 他们的birth_info日期对人员列表进行排序。
我该怎么办? 感谢
答案 0 :(得分:6)
函数sorted()
提供key
参数。可以定义一个callable,它返回键来比较项目:
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 :(得分: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.