遍历字典列表并更新上一行的值

时间:2018-10-10 12:48:18

标签: python

我有一个字典列表,在这里我需要通过在输入时间上加上时间增量来计算退出时间。然后,我需要用上一行的退出时间更新下一行的进入时间,并向其添加另一个增量,然后该增量成为退出时间。

.Trash

我已经花了很多天时间,但是我觉得这样的同时操作缺少一些东西。我对其他数据结构了解不多,但是我应该考虑使用堆,队列还是堆栈?这是我的代码。

gtag('event', 'click', {
                      'event_category': 'Your Catergory'
                    }); 

有一个函数cal_ExitTime编写成这样-

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)]

当我运行程序时,列表中的第一个字典条目会更新,而其余的entry_time和exit_time会更新为第一行的exit_time。

似乎我的列表字典的条目不一致(即空列表或0值),但是我的数据源是这样的。

我期望的代码如下-

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]

感谢您的宝贵见解和帮助。

1 个答案:

答案 0 :(得分:1)

认为您所描述的是这样的:

last = None
for row, delta in zip(lst, delta_lst):
    if last is not None:
        row["entry_time"] = last["exit_time"]

    row["exit_time"] = row["entry_time"] + delta
    last = row