我是 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
。在第四次尝试中,它检测到 2
id。当它在 while 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")
第一个for
循环运行一次,并将dataID
的时间值保存在dict
中。在下一个 for 循环中,当前时间减去该时间,总秒数保存在 data_dict_sec 中。在第一次迭代中,总秒数将为 0,但从下一次迭代开始,它将开始保存正确的秒数。仅当有 1 个数据 id 时才可以正常工作。一旦第二个数据到来,它就不会记录时间。
任何人都可以建议一种写这个的好方法吗?主要目标是持续保存每个数据 ID 的时间段值。请帮忙。谢谢
最佳答案
唯一一次将 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
关于python - 如何更新Python中收到的每个数据的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53340293/