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

标签 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。在第四次尝试中,它检测到 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/

相关文章:

C++:我如何获得 unix 时间?

python - 以通用方式为 Python 中的所有子类实现 __neg__

dictionary - 在 Julia 中检查复杂类型时规范不足

java - 如何在不使用线性搜索的情况下有效地在字典中搜索单词java : Reducing Search Space

MySQL如何添加超过24的2次:00 hours

MySQL select from * between < xx > 分钟

python - 如何检索数据库中类型错误的数据字段?

python - 如何读取大型 csv 文件的特定行

python - 嵌套递归是可能的还是我们应该避免递归?

swift - Swift 中的字典值