Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将带有datetime键的字典转储到json文件生成TypeError_Python_Json_Datetime_Dictionary - Fatal编程技术网

Python 将带有datetime键的字典转储到json文件生成TypeError

Python 将带有datetime键的字典转储到json文件生成TypeError,python,json,datetime,dictionary,Python,Json,Datetime,Dictionary,我创建了一个字典,并试图将其作为json文件转储,但由于键的类型是datetime,所以出现了问题 在我的研究中,我找到了价值观的解决方案,但没有找到关键点的解决方案 以下是我目前的代码: import json from datetime import date, datetime d = { datetime.now(): { 'name' : 'Foo' } } def myconverter(o): if isinstance(o, datet

我创建了一个字典,并试图将其作为json文件转储,但由于键的类型是datetime,所以出现了问题

在我的研究中,我找到了价值观的解决方案,但没有找到关键点的解决方案

以下是我目前的代码:

import json
from datetime import date, datetime

d = {
    datetime.now(): {
        'name' : 'Foo'
    }
}

def myconverter(o):
    if isinstance(o, datetime):
        return o.isoformat()

print(d)

print(json.dumps(d, default=myconverter, indent=4))
错误消息: TypeError:键必须是str、int、float、bool或None,而不是datetime

顺便说一下,这是一个例子,原始字典确实需要按日期时间进行索引。
如果真的不可能,我会考虑使用时间戳,但是我更喜欢避免,因为它是不可读的,

如果你想把原来的字典保留为<代码>日期时间< /Cord>对象作为关键字,只需创建一个拷贝,使用<代码>日期时间>代码>序列化,只用于存储:

d={
datetime.now(){
“name”:“Foo”
}
}
序列化的_d={k.isoformat():v表示k,v表示d.items()}
打印(json.dumps(序列化,缩进=4))
>>> {
“2019-12-23T22:56:15.768500”:{
“名称”:“Foo”
}
}

请包含实际的错误消息。你能分享更多关于你的数据的信息吗?我特别好奇导致在字典中使用datetime对象作为键的情况。尝试分析加密货币交换数据-更具体地说,使您的数据像一个时间序列?您可以说是的。问题是,我正在尝试使用给定的蜡烛日期时间作为键来存储从api获取的数据,因为可以多次获取同一蜡烛的新版本,而它的not closedJSON键必须是JSON字符串日期索引时间。主要目标是将数据类型更改为仅存储,因为为dictionaryedited@luix10存储datetime值时看起来很简单,为了存储目的,您不能将其保存在
json
中,作为
datetime
对象,它必须是
字符串
@AMC我在使用他的代码时得到
TypeError
,因此,这意味着
default
没有运行。
json.dumps(d,default=myconverter,indent=4)
引发
TypeError
,因为
datetime
对象不能用作
json
中的键,它需要先序列化,
json.dumps
中的
default
参数没有任何作用,功能
myconverter
未运行@AMC@Marcos哦,是的,我知道。我对这个答案的第一个评论是对OP写作的回应,主要目的是将数据类型更改为只存储。。。因为在我看来,你的代码就是这么做的。