如何更改Python代码以使其正常工作
我需要一些帮助。 我有一本字典,它表示每15分钟8天内的测量数据,但有些测量数据缺失。键是日期时间对象:如何更改Python代码以使其正常工作,python,list,datetime,for-loop,Python,List,Datetime,For Loop,我需要一些帮助。 我有一本字典,它表示每15分钟8天内的测量数据,但有些测量数据缺失。键是日期时间对象: datetime(year, month, date, hour, minute) 和值表示测量参数。我的目标是获得一本新的字典,其中的键只代表一天中的时间,例如: time(hour, minute) 它的值是每天同一时间提供的测量值列表。因此,我希望获得长度为L/8的新字典,而不是第一个长度为L/8的字典,其中每个值都是8个数字的列表(如果在一两天内缺少值,则有时更少)。对于我来说,
datetime(year, month, date, hour, minute)
和值表示测量参数。我的目标是获得一本新的字典,其中的键只代表一天中的时间,例如:
time(hour, minute)
它的值是每天同一时间提供的测量值列表。因此,我希望获得长度为L/8的新字典,而不是第一个长度为L/8的字典,其中每个值都是8个数字的列表(如果在一两天内缺少值,则有时更少)。对于我来说,这是一个非常简单的问题,如果没有缺失值,但有了缺失值,我的程序会返回一些奇怪的结果。如果有人能提供一个想法,那就太好了!这是我的代码(tec是我的初始字典):
time\u of_day=[]
日期=日期时间(2020,1,13,0,0)
日期<日期时间(2020,1,14,0,0):
每天的时间。附加(日期)
日期=日期+td(分钟=15)
日期=dict.fromkeys(日期的时间,[])
对于我在day_tec.keys()中:
j=0
而j<8:
尝试:
day_tec[i].追加(tec[i+j*timedelta(days=1)])
例外情况除外,如e:
打印(e)
通过
j=j+1
打印(日)
print(day_-tec)每15分钟返回一次datetime(2020,1,13,0,0)到datetime(2020,1,14,0,0)之间带有datetime对象作为键的字典,但其值是与初始字典长度相同的列表。您可以使用
defaultdict
获取所需内容。下面的代码将为您提供一个字典,其中每个键都是小时和分钟的元组,每个值都是tec
dict
中记录的值
from collections import defaultdict
day_tec = defaultdict(list)
for dt, value in tec.items():
tm = (dt.hour, dt.minute)
day_tec[tm].append(value)
print(day_tec)
显示产生奇怪结果的代码,我们应该能够帮助您修复它。但我们不会为你写的。我添加了代码
from collections import defaultdict
day_tec = defaultdict(list)
for dt, value in tec.items():
tm = (dt.hour, dt.minute)
day_tec[tm].append(value)
print(day_tec)