[英]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.