【问题标题】:Python3: Date strings to chronological orderPython3:按时间顺序排列日期字符串
【发布时间】:2012-08-02 10:42:16
【问题描述】:

我有一本字典,其中的键是日期字符串。格式为:

%d.%m.%Y

即。 “5.11.2008”。日期每天都有对应的数据。

将它们收集到两个列表中的最简单方法是什么,一个用于键,一个用于值,其中列表按时间顺序排列,键 [5] 将对应于值 [5]?

我最终想要实现的是获取这些日期和值并相应地绘制它们。我目前正在使用 matplotlib。

【问题讨论】:

    标签: python date python-3.x matplotlib


    【解决方案1】:

    将键转换为datetime.date 值;使用 .items() 会为您提供键和值的元组,然后您可以对其进行排序:

    data = [(datetime.datetime.strptime(k, '%d.%m.%Y').date(), v) 
            for k, v in yourdict.items()]
    data.sort()
    

    然后索引这些; data[5][0] 是日期,data[5][1] 是字典值。

    如果需要保留原来的日期格式,只使用日期格式解析进行排序;这是上面使用排序键的单行变体:

    data = sorted(yourdict.items(), 
                  key=lambda i: datetime.datetime.strptime(i[0], '%d.%m.%Y'))
    

    在这里,我使用 sorted() function 来完成繁重的工作,key lambda 获取每个日期字符串,将其转换为 datetime.datetime 实例,仅用于排序目的。我不会像第一个示例那样将其限制为 datetime.date 实例。

    【讨论】:

    • strptime这两个参数不是颠倒了吗?
    • 这比我想象的要容易。并感谢您提供额外的“仅排序”选项。我还不确定如何将这些放在 matplotlib 中,所以所有种类都很好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 2019-01-05
    • 1970-01-01
    • 2018-10-18
    • 2021-06-28
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多