首页 > 解决方案 > 根据值的时间增量更新字典

问题描述

我正在尝试根据从其值生成的时间增量来更新字典。

这是字典的一个例子:

my_dict = {'6.1.7.1': {'timestamp':('2020-05-26 12:05:08')},
'1.1.1.2': {'timestamp': ('2020-05-26 12:05:08')},
'2.61.5.4': {'timestamp': ('2020-05-25 12:05:08')},}

我想知道键值是否有超过24小时的时间戳值来删除它,所以我这样做了:

from datetime import date
from datetime import datetime
import pandas as pd

today = date.today()
today=today.strftime(format= '%Y-%m-%d %H:%M:%S')
today=pd.to_datetime(today)
print( today)

for k,v in my_dict.items():
    timedelta = v - today
    if timedelta>24:
        my_dict.pop(k, None) 

但我收到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-49-037388a76b67> in <module>
      8 
      9 for k,v in my_dict.items():
---> 10     timedelta = v - today
     11     if timedelta>24:
     12         my_dict.pop(k, None)

pandas/_libs/tslibs/timestamps.pyx in pandas._libs.tslibs.timestamps._Timestamp.__sub__()
TypeError: descriptor '__sub__' requires a 'datetime.datetime' object but received a 'dict'

如何操纵字典的值来获取 timedelta 并消除字典中的键和值?由于我对字典不太熟悉,因此将不胜感激任何帮助。

标签: python

解决方案


使用您的方法进行解析str-datetime这可能就是您正在寻找的(只是for循环)

import copy

for k,v in copy.deepcopy(my_dict).items():
    timedelta = pd.to_datetime(v['timestamp']) - today
    if timedelta.days>1:
        my_dict.pop(k, None) 

我假设您想if处理条件超过 1 天或 24 小时...


推荐阅读