首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python3中将嵌套的json转换为以下格式?

如何在python3中将嵌套的json转换为以下格式?
EN

Stack Overflow用户
提问于 2020-12-09 01:14:23
回答 1查看 24关注 0票数 0
代码语言:javascript
复制
{
  "key1": {
    "subfield1": 4,
    "subfield2": "hello"
    },
  "key2": 325,
  ...
}

不知道它的嵌套深度(最多4-5层)。唯一的保证是每个键都是字符串类型。我想要做的是将上面的JSON转换成以下格式:

代码语言:javascript
复制
{
    "field1.subfield1": 4,
    "field1.subfield2": "hello", 
    "field2" : 325,
    ...,
    "fieldN.subfieldM.subsubfieldK. ...": "blah blah"
}

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-09 01:38:41

我目前假设您的字典只包含其他嵌套字典或最终值。

我的输入数据:

代码语言:javascript
复制
data = {
    "key1": {
        "subfield1": 4,
        "subfield2": {"subfield1": 4,
                      "subfield2": "hello"
                      },
    },
    "key2": 325,
}

然后,通过使用python generator,我可以使用以下命令生成嵌套的键组合和值:

代码语言:javascript
复制
def flatten_dict(data, prefix=''):
    for key, value in data.items():
        if isinstance(value, dict):
            for item in flatten_dict(value, prefix=f"{prefix}{key}."):
                yield item
        else:
            yield f"{prefix}{key}", value

然后对数据使用该函数:

代码语言:javascript
复制
from pprint import pprint
pprint(dict(flatten_dict(data)))

输出中的结果:

代码语言:javascript
复制
{'key1.subfield1': 4,
 'key1.subfield2.subfield1': 4,
 'key1.subfield2.subfield2': 'hello',
 'key2': 325}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65203641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档