python - 如何更改 Python 代码以使其正常工作
问题描述
我需要一些帮助。我有一本字典,它表示每 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) ,但它的值是相同的列表长度作为初始字典长度。
解决方案
你可以使用 adefaultdict
来得到你想要的。下面的代码将为您提供一个字典,其中每个键是小时和分钟的元组,每个值是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)
推荐阅读
- mysql - 如何在我的 Python 脚本中修复 MySQL 插入查询?
- javascript - 使用 jQuery 委托从 iframe 捕获加载事件
- android - 以纵向模式旋转的活动
- javascript - 是否可以将我的页面分享到 facebook Laravel 中的特定组或页面
- node.js - 如何防止消息在 BotFramework Nodejs 中乱序到达?
- c# - 无法删除文件夹 - Isilon REST API 返回错误 409
- java - 如何使用 java 泛型类型参数?
- angular - 同时显示两个垫子错误
- c# - 将成员代码编号转换为已知字符串?
- excel - 将数据从动态命名的源文件复制到主文件