当前位置:  开发笔记 > 编程语言 > 正文

按日期键排序python字典

如何解决《按日期键排序python字典》经验,为你挑选了1个好方法。

在主词典中,日期是一个值.有相同日期的数据.然后我拿出日期并通过创建一个二维字典对其进行分组,其中日期是关键.

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



1> Shivendra..:

这里的想法是使用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>bTrue相同的.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

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有