对嵌套的python字典进行排序

时间:2011-03-15 04:14:16

标签: python sorting 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 个答案:

答案 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])))

将返回已排序的版本。