python - 获取字典的缺失日期
问题描述
我有下一本字典,我需要获取确定时期之间的缺失时期,换句话说,获取一个时期的结束日期和下一个时期的开始日期之间的时期。
{'0': {'enddate': u'2017/05/25',
'startdate': u'2017/05/01'},
'1': {'enddate': u'2017/09/30',
'startdate': u'2017/06/01'},
'2': {'enddate': u'2018/03/31',
'startdate': u'2018/01/01'},
'3': {'enddate': u'2019/02/28',
'startdate': u'2018/05/01'}}
我不确切知道如何存储丢失的日期。我想存储它的最佳选择可能是在另一个字典中。所以我需要另一个字典,基于我发布的示例,如下所示:
{'0': {'enddate': u'2017/05/26',
'startdate': u'2017/05/31'},
'1': {'enddate': u'2017/12/31',
'startdate': u'2017/10/01'},
'2': {'enddate': u'2019/03/30',
'startdate': u'2018/04/01'}'
获取这个 dict 的函数很简单:
def periods(periods):
total_periods={}
for period in periods:
total_periods[period] = {}
for startdate in periods[period][0]:
total_periods[period]['startdate'] = startdate
for enddate in periods[period][-1]:
total_periods[period]['enddate'] = enddate
这个函数的输入是另一个函数,它在目录树中重新收集所有日期。问题是我不知道该怎么做,我尝试了在这里找到的不同选项,但没有成功......我将不胜感激任何帮助或指导开始......希望我能正确和清楚地解释。
此致。
解决方案
尝试
import datetime
import pprint
data = {'0': {'enddate': u'2017/05/25',
'startdate': u'2017/05/01'},
'1': {'enddate': u'2017/09/30',
'startdate': u'2017/06/01'},
'2': {'enddate': u'2018/03/31',
'startdate': u'2018/01/01'},
'3': {'enddate': u'2019/02/28',
'startdate': u'2018/05/01'}}
start = 1
output = dict()
while True:
entry_1 = data.get(str(start - 1), None)
entry_2 = data.get(str(start), None)
if entry_1 is None or entry_2 is None:
break
else:
start_date = datetime.datetime.strptime(entry_2['startdate'], '%Y/%M/%d')
end_date = datetime.datetime.strptime(entry_1['enddate'], '%Y/%M/%d')
output['{}-{}'.format(start, start - 1)] = {'start': str(start_date), 'end': str(end_date),
'delta': str(end_date - start_date)}
start += 1
pprint.pprint(output)
输出
{'1-0': {'delta': '23 days, 23:59:00',
'end': '2017-01-25 00:05:00',
'start': '2017-01-01 00:06:00'},
'2-1': {'delta': '-336 days, 0:08:00',
'end': '2017-01-30 00:09:00',
'start': '2018-01-01 00:01:00'},
'3-2': {'delta': '29 days, 23:58:00',
'end': '2018-01-31 00:03:00',
'start': '2018-01-01 00:05:00'}}
推荐阅读
- ssas - ssas表格模型多个事实
- plot - Mathematica 11.3 输出 pdf 绘图的字体粗细
- php - 运行 composer install 命令时出错
- javascript - Nightwatch.js 功能未“关闭”
- java - 无法从 selenium java 中的烤消息中获取文本
- android - Flutter WebView 与代理
- mysql - 通过从以前的记录中复制数据来插入缺失的记录
- excel - Excel 在特定列中运行缓慢
- python - Virtualenv Wrapper 正在虚拟环境中安装两个 python 版本
- firebase - 如何在安全规则中检测 Firestore 文档中是否存在字段