我有一个字典列表,我需要在其中通过将时间增量添加到进入时间来计算退出时间。然后我需要用前一行的退出时间更新下一行的进入时间,并向其添加另一个增量,然后成为退出时间。
lst = [
{'entry_time': [datetime.time(8, 20)],'exit_time': [0]},
{'entry_time': [],'exit_time': []},
{'entry_time': [0],'exit_time': [0]},
{'entry_time': [],'exit_time': []}
]
delta_lst = [datetime.timedelta(0, 53),
datetime.timedelta(0, 32),
datetime.timedelta(0, 32),
datetime.timedelta(0, 32)]
我在这上面花了很多天,但我觉得我错过了这样一个同时操作的东西。我不太了解其他数据结构,但我应该考虑堆、队列还是堆栈?这是我的代码。
for idx,l in enumerate(lst):
for key,val in l.items():
if key == 'entry_time':
try:
entry_time = l[key][0]
cal_ExitTime(entry_time,idx)
l['exit_time'] = [exit_time]
except:
entry_time = lst[idx-1]['exit_time'][0]
l['entry_time'] = [exit_time]
cal_ExitTime(entry_time,idx)
l['exit_time'] = [exit_time]
有一个函数 cal_ExitTime 是这样写的 -
def cal_ExitTime(entry_time,idx):
converted_start_time = datetime.datetime.combine(datetime.date(1,1,1),entry_time)
exit_time = (converted_start_time + delta_lst[idx]).time()
return exit_time
当我运行我的程序时,我的列表中的第一个字典条目会被更新,而我的 entry_time 和 exit_time 的其余部分会被我的第一行的 exit_time 更新。
看起来我的列表字典的条目不一致(即空列表或0值),但我的数据来源是这样的。
我的预期代码如下 -
lst = [
{'entry_time': [datetime.time(8, 20)],'exit_time':[datetime.time(8, 20, 53)]},
{'entry_time': [datetime.time(8, 20,53)],'exit_time': [datetime.time(8, 21, 25)]},
{'entry_time': [datetime.time(8, 21, 25)],'exit_time': [datetime.time(8, 21, 57)]},
{'entry_time': [datetime.time(8, 21, 57)],'exit_time': [datetime.time(8, 22, 29)]}
]
感谢您的宝贵见解和帮助。
相关分类