python字典datetime作为键,keyError
我正在尝试在Linux中使用cron运行Python脚本,它应该构建一个数据字典。我试图使用python字典datetime作为键,keyError,python,datetime,dictionary,keyerror,Python,Datetime,Dictionary,Keyerror,我正在尝试在Linux中使用cron运行Python脚本,它应该构建一个数据字典。我试图使用datetime().now().time()作为字典中的键,但它似乎引发了一个错误 在Python中,datetime类型不能用作字典键吗?如果是这样,我有什么选择 代码: 错误: 在构造dict(data\u int)时 36 37定义构造目录(数据链接): --->38日期/日期/时间[使用/时间/小时]=数据/时间 39打印日期 40 KeyError:datetime.time(22,40,33
datetime().now().time()
作为字典中的键,但它似乎引发了一个错误
在Python中,datetime
类型不能用作字典键吗?如果是这样,我有什么选择
代码:
错误:
在构造dict(data\u int)时
36
37定义构造目录(数据链接):
--->38日期/日期/时间[使用/时间/小时]=数据/时间
39打印日期
40
KeyError:datetime.time(22,40,33746509)
您实际上没有将useage\u dict\u hourly
设置为任何这样的值,这是您的错误。
理想情况下,你应该做以下事情:
useage_dict_hourly[time_now] = None
date_wise_dict[useage_dict_hourly[time_now]] = data_int
或者,最好使用datetime.datetime.now()作为键:
datetime_wise_date[datetime.datetime.now()] = data_int.
这样,值就不可能发生冲突(虽然不太可能,但每小时使用一次)回答您关于datetime作为字典键的问题: 是的,datetime的time对象可以用作字典键 将对象用作字典键的条件: 要用作字典键,对象必须支持哈希函数(例如,通过
\uuuuuuuuuuuuuuuuuuuuuuu
)、相等比较(例如,通过\uuuuuueq\uuuuuuuuuuu
或)(…)
(来源:)
引用条件的日期时间支持:
支持的操作:
- 哈希,用作dict键
(来源:)
但是,由于dictusage\u dict\u hourly
为空,因此您将获得此异常
usage\u dict\u hourly
通过{}
启动。因此,当您尝试在函数构造dict
中查找键为time\u now
的元素时,它会引发KeyError
异常,因为尚未找到该键。您在示例中没有定义每小时使用次数,如果您的意思是每小时使用次数,你从来没有在里面放过任何东西。毫无疑问,如果没有任何键,它就找不到键。也许值得在代码中添加一些注释。除了良好的实践之外,这对我们现在以及您/其他人将来关注这一点都很有用。现在还不清楚date\u wise\u dict
和useage\u dict\u hourly
应该包含什么内容。你是对的。这是我在这里打字时犯的错误。但这并不能解决错误。尽管输入错误,正如@zondo所说的,您的错误是因为usage\u dict\u hourly
是空的,所以在那里找不到任何东西。它不是由键类型datetime引起的。>>要用作字典键,对象必须支持哈希函数(例如通过_哈希函数)、相等比较(例如通过_eq或_cmp函数)(来源:)
useage_dict_hourly[time_now] = None
date_wise_dict[useage_dict_hourly[time_now]] = data_int
datetime_wise_date[datetime.datetime.now()] = data_int.