gpt4 book ai didi

python - 按日期键对 python 字典进行排序

转载 作者:行者123 更新时间:2023-12-02 01:34:34 24 4
gpt4 key购买 nike

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

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 保留条目顺序。

这里的想法是使用(键,值)对的元组列表,因为字典没有排序范围,而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')]

说明:(用于将键转换为日期时间以进行排序)

如果将日期字段保留为字符串,则考虑字典顺序,并且 3 位于 0 之后,因此 a>b正确,但对于日期对应项则不然。 二月肯定是在一月之后。

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

关于python - 按日期键对 python 字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34129391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com