0

我正在尝试对元组字典进行排序,其中第二项包含要排序的日期。字典看起来像这样:

time_founded: {Soonr: 2005-5-1, SpePharm: 2006-9-1, and so on...}

现在我正在尝试像这样对日期进行排序:

dict = sortedLists[category]    
sortedtime = sorted(dict.iteritems(),  key=lambda  d: map(int, d.split('-')))

但我收到一个错误,因为它试图对元组(Soonr:2005-5-1)进行排序,而不仅仅是日期。如何更新排序参数以告诉它只查看日期而不是整个元组?

4

2 回答 2

1

试试这个:

sortedtime = sorted(dict.iteritems(), key=lambda d: map(int, d[1].split('-')))

唯一的区别是[1]它选择了项目的价值部分。

于 2012-09-05T04:06:09.683 回答
0

不确定您是否可以控制数据结构,但如果可以,请将数据结构的第一个元素更改为您需要排序的日期。Python 按它找到的第一个元素对可迭代对象进行排序,或者,它可以按您定义的键进行排序。

我建议你把它做成一个元组,里面有一本字典以简化事情:

>>> dates = [ ('2006-9-1', {Soonr:'2005-5-1'}),
              ('2006-8-9', {Soonr:'2005-8-28'})
            ]
>>> dates.sort() #will sort by the first element of the list items, if iterable...
>>> dates
[('2006-8-9', {Soonr:'2005-8-28'}), ('2006-9-1', {Soonr:'2005-5-1'})]
于 2012-09-05T04:04:03.850 回答