簡體   English   中英

排序嵌套的python字典

[英]Sorting nested python dictionary

我有以下格式的python字典。

{'KEY': (NUMBER, [DATE1, DATE2]}

例如, {'a': (10, ['2010/04/11','2009/03/11'])}

如何按DATE1(列表中的第一個元素)對字典進行排序?

編輯

日期相同時可以再次排序嗎? 例如。

{'a': (10, ['2010/04/11','2009/03/11'])}
{'b': (20, ['2010/04/11','2009/03/10'])}
{'c': (100, ['2009/01/01'])}

->

{'b': (20, ['2010/04/11','2009/03/10'])} // this comes first as 20 > 10
{'a': (10, ['2010/04/11','2009/03/11'])}
{'c': (100, ['2009/01/01'])}

字典無法排序。 如果要2元組的排序列表:

sorted(D.iteritems(), key=lambda x: x[1][1][0])

如果希望按日期順序而不是字符串順序將表達式傳遞給datetime.strptime() (不是給定現有的日期格式有很大的不同...)。

如果您使用的是Python 2.7或更高版本,則可以使用新的collections.OrderedDict類。 加上Ignacio進行實際排序的代碼,它應該可以為您提供所需的內容。

假設a是您當前的字典,那么

OrderedDict(sorted(a.items(), key=lambda x: (x[1][1][0], -x[1][0])))

將返回一個排序的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM