繁体   English   中英

如何更改 Python 代码以使其正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM