我有一个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'])}
答案 0 :(得分:4)
词典不合格。如果你想要一个2元组的排序列表:
sorted(D.iteritems(), key=lambda x: x[1][1][0])
如果您希望以日期顺序而不是字符串顺序将表达式传递给datetime.strptime()
(并非根据现有日期格式存在巨大差异......)。
答案 1 :(得分:3)
如果您使用的是Python 2.7或更高版本,则可以使用新的collections.OrderedDict类。与Ignacio的实际排序代码一起,它应该为您提供所需的内容。
说a是你当前的字典,然后
OrderedDict(sorted(a.items(), key=lambda x: (x[1][1][0], -x[1][0])))
将返回已排序的版本。