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

2024-09-27 19:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个字典,并试图将其作为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

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


Tags: 文件namefromimportjson密码类型datetime
1条回答
网友
1楼 · 发布于 2024-09-27 19:29:19

如果您想保留带有datetime对象作为键的原始字典,只需创建一个副本,将datetime序列化以存储:

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

serialized_d = {k.isoformat(): v for k, v in d.items()}

print(json.dumps(serialized_d, indent=4))

>>> {
    "2019-12-23T22:56:15.768500": {
        "name": "Foo"
    }
}

相关问题 更多 >

    热门问题