我正在尝试对元组字典进行排序,其中第二项包含要排序的日期。这本字典看起来像这样:
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('-')))
但我遇到了一个错误,因为它试图对元组(Sooner:2005-5-1)进行排序,而不仅仅是日期。如何更新排序参数,使其只查看日期,而不查看整个元组?
试试这个:
sortedtime = sorted(dict.iteritems(), key=lambda d: map(int, d[1].split('-')))
唯一的区别是[1]
,它选择了项目的值部分。
不确定您是否可以控制数据结构,但如果可以,请将数据结构的第一个元素更改为您需要排序的日期。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'})]