2016-10-01 116 views
3

的價值排序DICS的名單我有一個看起來像這樣的列表:Python的 - 通過dict`s字典價值

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日期。

我應該怎麼做? 感謝

+1

這是一個你到了那裏'persons'的'list'內'dict'。 – metatoaster

+0

對我的朋友 –

+1

您應該修正您的示例數據:需要引用那些日期字符串以使該列表成爲合法的Python(以及合法的JSON)。 –

回答

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

排序或者排序? –

+0

是的,這是一個錯字,謝謝! – keksnicoh

+0

謝謝!解決了我的問題 –

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.