如何更新Python中收到的每个数据的时间

时间:2018-11-16 14:58:23

标签: python dictionary time

我是python的初学者,我正在编写脚本以节省从算法接收的数据的时间

在脚本中,我有一个算法,该算法接受少量参数并返回其检测到的数据的ID。以下是其一些输出:

S.No    Data Id         Time
1       0               2018-11-16 15:00:00
2       0, 1            2018-11-16 15:00:02
3       0, 1            2018-11-16 15:00:03
4       0, 1, 2         2018-11-16 15:00:05
5       0, 1, 2         2018-11-16 15:00:06
6       0, 2            2018-11-16 15:00:08

从上面的输出中,我们可以看到在第一次尝试时它检测到ID为0的数据。在第二次尝试中,它检测到ID为1的数据,因此总数据ID为0, 1。在第4次尝试中,它检测到2 id。它在while True中运行时一直保持下去。从上面我们可以说0 id的时间段是8 sec1的时间段是4 sec2的时间段是{{1} }。我需要计算这些时间段。为此,我编写了以下代码:

3 sec

第一个data_dict = {} # To store value of time for each data id data_dict_sec = {} # To store value of seconds for each data id data = amc_data_retention() # data contains the data id for dataID in data.items(): if run_once: run_once = False data_dict[dataID] = time.time() data_dict_sec[dataID] = 0 for dataID in data.items(): if dataID in data_dict: sec = time.time() - data_dict[dataID] data_dict_sec[dataID] += sec data_dict[dataID] = time.time() else: print("New data detected") 循环运行一次,并将for的时间值保存在dataID中。在下一个for循环中,该时间与当前时间相减,总秒数保存在dict中。在第一次迭代中,总秒数将为0,但是从下一次迭代开始,它将开始保存正确的秒数。仅当有1个数据ID时,此方法才能正常工作。一旦第二个数据到来,它就不会记录时间。

任何人都可以提出一种写这篇文章的好方法。主要目标是继续保存每个数据ID的时间段值。请帮忙。谢谢

1 个答案:

答案 0 :(得分:2)

第一次将data_ID键添加到data_dict的操作是第一次运行。它应该添加每个新的data_ID。我没有看到需要第一个for循环,它只在第一次运行时添加data_ID键。如果将字典密钥初始化移动到第二个for循环中,它会检查data_ID是否在data_dict中,它可能会做您需要的事情。如果不是,则将其初始化。

也许这可以满足您的需求:

data_dict = {}       # To store value of time for each data id
data_dict_sec = {}   # To store value of seconds for each data id

data = amc_data_retention()   # data contains the data id

for dataID in data.items():
    if dataID in data_dict:
        sec = time.time() - data_dict[dataID]
        data_dict_sec[dataID] += sec
        data_dict[dataID] = time.time()

    else:
        print("New data detected")
        data_dict[dataID] = time.time()
        data_dict_sec[dataID] = 0