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

如何更新Python中接收的每个数据的时间,python,dictionary,time,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

我是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。当它在
中运行时,它将继续运行,而为True
。从上面我们可以说,
0
id的时间段是
8秒
1
的时间段是
4秒
2
的时间段是
3秒
。我需要计算这些时间段。为此,我编写了以下代码:

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")
的第一个
循环运行一次,它将
dataID
的时间值保存在
dict
中。在下一个for循环中,该时间与当前时间相减,总秒数保存在
data\u dict\u sec
中。在第一次迭代中,总秒数将为0,但从下一次迭代开始,它将开始保存正确的秒数。只有当有1个数据id时,这才可以正常工作。一旦第2个数据出现,它就不会记录时间


有谁能推荐一个好的写作方法吗。主要目的是保存每个数据id的时间段值。请提供帮助。谢谢

这是第一次向
数据目录
添加
数据ID
键。它应该添加每个新的
数据\u ID
is。我不认为需要第一个for循环,它只在第一次运行时添加
data\u ID
键。如果将字典键初始化移动到第二个for循环中,它可能会执行您所需的操作,在该循环中检查
数据\u ID
是否在
数据目录中。如果不是,则初始化它

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

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  

非常感谢。成功了。我不知道我为什么不那样想。只是一个简单的问题:dict可以保存多少
key:value
。感谢dict没有大小限制。但是,如果在某个时间段没有看到
data\u ID
,您是否需要在下次看到它时将
data\u dict\u sec[dataID]
重置为零?我认为算法中不会重复
data\u ID
,因此无需将
data\u dict\u sec[dataID]
重置为零。但是,我认为最好在每小时后重置完整的
数据记录秒
数据记录秒
,这样就不会缓冲太多数据。您的建议是什么?如果
dataID
一旦消失就不会再被看到,您可以从
data\u dict
data\u dict\u sec
中删除新
data.items()
中没有的
dataID
键。您可以使用
del
删除它们,例如
del data\u dict[dataID]
。这将保持字典的整洁。