【问题标题】:How to get values from dictionaries recursively using Python如何使用Python递归地从字典中获取值
【发布时间】:2018-08-01 07:02:28
【问题描述】:

我正在处理一些复杂的 JSON 文件,我需要读取所有值并在它们遇到特定字符串时重命名它们。

问题是 JSON 文件在字典中的列表中包含字典...非常疯狂。这是一个例子:

{
    "key1": {
        "subkey11": "KeepMe1",
        "subkey12": "ChangeMe2"
    },
    "key2": [],
    "key3": [],
    "key4": [
        {
            "subkey41": "ChangeMe41",
            "subkey42": "KeepMe42",
            "subkey43": "ChangeMe43",
            "subkey44": [
                {
                    "subkey441": "ChangeMe441",
                    "subkey442": "KeepMe442"
                }
            ]
        }
    ]
}

如果需要,我如何递归读取所有内容以获取值并重命名它们?

我对此感到非常疯狂。提前致谢!

【问题讨论】:

  • 请详细说明您到目前为止所尝试的内容。 SO 不是代码编写服务,但如果您能告诉我们您哪里出错了,我们将很乐意提供帮助。
  • @PaxVobiscum 很难解释我所尝试的一切。我不是想通过简单的方式得到答案,我只是想寻求一些技巧,帮助我了解不同的观点并应用我认为最好的解决方案。还是谢谢。

标签: python json dictionary key


【解决方案1】:

如果你像这样将 json 字符串转换为 python dict 对象会更容易。

import json

data = """
{
    "key1": {
        "subkey11": "KeepMe1",
        "subkey12": "ChangeMe2"
    },
    "key2": [],
    "key3": [],
    "key4": [
        {
            "subkey41": "ChangeMe41",
            "subkey42": "KeepMe42",
            "subkey43": "ChangeMe43",
            "subkey44": [
                {
                    "subkey441": "ChangeMe441",
                    "subkey442": "KeepMe442"
                }
            ]
        }
    ]
}
"""
print json.loads(data)

输出:-

{u'key3': [], u'key2': [], u'key1': {u'subkey11': u'KeepMe1', u'subkey12': u'ChangeMe2'}, u'key4': [{u'subkey44': [{u'subkey441': u'ChangeMe441', u'subkey442': u'KeepMe442'}], u'subkey43': u'ChangeMe43', u'subkey42': u'KeepMe42', u'subkey41': u'ChangeMe41'}]}

【讨论】:

  • 谢谢,我试图递归读取密钥,但这更容易。
猜你喜欢
  • 2022-06-23
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多