首页 > 解决方案 > 检查python字典中的缺失天数

问题描述

我有一本字典,其中包含 2018-01-01 和 2018-06-01 之间 6 个月的日期值。它们以日期时间格式存储:

{datetime.datetime(2018, 3, 27, 0, 0): 1082721.139,
 datetime.datetime(2018, 1, 31, 0, 0): 819801.852,
 datetime.datetime(2018, 1, 10, 0, 0): 3369110.346,
 datetime.datetime(2018, 3, 29, 0, 0): 850877.5490000001,
 datetime.datetime(2018, 5, 31, 0, 0): 1441286.6970000002,
 datetime.datetime(2018, 2, 21, 0, 0): 1138380.7969999998,
 datetime.datetime(2018, 5, 23, 0, 0): 626211.4509999999,
 datetime.datetime(2018, 4, 30, 0, 0): 687981.8659999999,
 datetime.datetime(2018, 3, 8, 0, 0): 543523.898,
 datetime.datetime(2018, 4, 26, 0, 0): 527085.802,
 datetime.datetime(2018, 1, 4, 0, 0): 4374612.232,
 datetime.datetime(2018, 2, 7, 0, 0): 726471.939,
 datetime.datetime(2018, 4, 19, 0, 0): 619662.2050000001,
 datetime.datetime(2018, 2, 27, 0, 0): 642528.55,
 datetime.datetime(2018, 1, 8, 0, 0): 643899.718,
 datetime.datetime(2018, 5, 2, 0, 0): 714148.8159999999,
 datetime.datetime(2018, 4, 15, 0, 0): 1001.46,
 datetime.datetime(2018, 3, 17, 0, 0): 14950.402,
 datetime.datetime(2018, 3, 24, 0, 0): 8526.3,
 datetime.datetime(2018, 3, 4, 0, 0): 18.18,
 datetime.datetime(2018, 5, 26, 0, 0): 90.0,
 datetime.datetime(2018, 5, 5, 0, 0): 88070.0,
 datetime.datetime(2018, 5, 6, 0, 0): 63936.0}

我想编写一个代码来检查缺失的日期,如果有的话,将它们添加到字典中,给它们一个值 0。最好的方法是什么?

我无法上传整个字典,因为 StackOverflow 不允许我上传这么长的代码

标签: python

解决方案


让我们调用你的初始字典,myinitd

from datetime import datetime, timedelta

sdate = datetime(2018, 1, 1)   # start date
edate = datetime(2018, 6, 1)   # end date

delta = edate - sdate       # as timedelta

l = []
for i in range(delta.days + 1):
    day = sdate + timedelta(days=i)
    l.append(day)

for dt in l:
    if dt not in myinitd:
        myinitd[dt] = 0

请注意,我得到了从这里生成完整日期范围的代码:打印两个日期之间的所有日期


推荐阅读