gpt4 book ai didi

python - 在 Python 中将复杂的键(元组)存储到 JSON 中

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:53 26 4
gpt4 key购买 nike

我想在 JSON 中存储具有复杂键(元组)的对象,例如:

obj = {('a', '1', '', 'b') : '1'}

但使用:

import json
json.dumps(obj)

导致以下错误:

TypeError: keys must be a string

将其转换为 JSON 并稍后取消它的最快/最佳方法是什么?

请注意,它必须存储在典型的 JSON 数据库中(例如 Cloudant/CouchDB/ElasticSearch)。

此外,我认为在我的程序中使用元组非常实用,因此更愿意最终得到一个包含元组作为键的字典(在加载 JSON 之后)。

最佳答案

我认为您可以使用两种解决方法。

  1. 将数据存储为元组列表,而不是字典。请注意,重新创建字典时,您必须将不可散列的列表转回元组。

    >>> json.dumps(obj.items())
    '[[["a", "1", "", "b"], "1"]]'
    >>> {tuple(x): y for x, y in json.loads(_)}
    {(u'a', u'1', u'', u'b'): u'1'}
  2. 将元组转换为字符串,然后在检索值时将这些字符串解析回元组。

    >>> import ast
    >>> json.dumps({repr(x): y for x, y in obj.items()})
    '{"(\'a\', \'1\', \'\', \'b\')": "1"}'
    >>> {ast.literal_eval(x): y for x, y in json.loads(_).items()}
    {('a', '1', '', 'b'): u'1'}

关于python - 在 Python 中将复杂的键(元组)存储到 JSON 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32045646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com