[英]How do I change the Python code to make it work properly
我需要帮助。 我有一本字典,它每 15 分钟表示 8 天的测量数据,但缺少一些测量值。 键是日期时间对象:
datetime(year, month, date, hour, minute)
和值代表测量参数。 我的目标是获得一个带有键的新字典,它只代表一天中的时间,例如:
time(hour, minute)
它的值是测量值列表,每天在同一时间提供。 因此,我想获得长度为 L/8 的新字典,而不是长度为 L 的第一个字典,其中每个值都是 8 个数字的列表(有时会更少,如果在一两天内有缺失值)。 如果没有缺失值,这对我来说是非常简单的问题,但是如果有缺失值,我的程序会返回一些奇怪的结果。 如果有人可以提供一个想法,那就太好了! 这是我的代码(tec 是我的初始字典):
time_of_day = []
date = datetime(2020, 1, 13, 0, 0)
while date < datetime(2020, 1, 14, 0, 0):
time_of_day.append(date)
date = date + td(minutes = 15)
day_tec = dict.fromkeys(time_of_day, [])
for i in day_tec.keys():
j = 0
while j < 8:
try:
day_tec[i].append(tec[i + j * timedelta(days = 1)])
except Exception as e:
print(e)
pass
j = j + 1
print(day_tec)
print(day_tec) 每 15 分钟返回一次以 datetime 对象作为键的字典,从 datetime(2020, 1, 13, 0, 0) 到 datetime(2020, 1, 14, 0, 0) ,但它的值是相同的列表length 作为初始字典长度。
您可以使用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.