在主词典中,日期是一个值.有相同日期的数据.然后我拿出日期并通过创建一个二维字典对其进行分组,其中日期是关键.
data = { "01-01-2015" : "some data", "05-05-2015" : "some data", "03-04-2015" : "some data" }
现在我想按日期降序排序,以便它看起来像这样:
data = { "05-05-2015" : "some data", "03-04-2015" : "some data", "01-01-2015" : "some data" }
我怎样才能做到这一点?
我正在使用python 2.6
这里的想法是使用OrderedDict
作为dictionary
对订货的同时OrderedDict保留挂单无用武之地.
这里的想法是使用list of tuples of (key, value) pairs
作为dictionary
对订货的同时OrderedDict保留挂单无用武之地.此外,我们必须将键转换为实际datetime
对象以使排序完美地工作,否则基于字符串的字段按字母顺序排序.
代码:
from datetime import datetime #from collections import OrderedDict data = { "01-01-2015" : "some data", "05-05-2015" : "some data", "03-04-2015" : "some data" } #ordered_data = OrderedDict( # sorted(data.items(), key = lambda x:datetime.strptime(x[0], '%d-%m-%Y'), reverse=True)) #Since OP is using python 2.6 where OrderedDict is not present, I changed the solution and the original solution is commented out ordered_data = sorted(data.items(), key = lambda x:datetime.strptime(x[0], '%d-%m-%Y'), reverse=True) print(ordered_data)
输出:
[('05-05-2015', 'some data'), ('03-04-2015', 'some data'), ('01-01-2015', 'some data')]
说明:(用于将键转换为datetime进行排序)
如果您将日期字段保留为字符串,则会考虑字典顺序3
,0
因此对于它们的日期对应项而言a>b
是True
相同的.Feb
绝对是追求Jan
.
a = "30-01-2015" b = "01-02-2015" print(a>b) #True a_datetime = datetime.strptime(a, '%d-%m-%Y') b_datetime = datetime.strptime(b, '%d-%m-%Y') print(a_datetime>b_datetime) #False