{
"key1": {
"subfield1": 4,
"subfield2": "hello"
},
"key2": 325,
...
}不知道它的嵌套深度(最多4-5层)。唯一的保证是每个键都是字符串类型。我想要做的是将上面的JSON转换成以下格式:
{
"field1.subfield1": 4,
"field1.subfield2": "hello",
"field2" : 325,
...,
"fieldN.subfieldM.subsubfieldK. ...": "blah blah"
}我该怎么做呢?
发布于 2020-12-09 01:38:41
我目前假设您的字典只包含其他嵌套字典或最终值。
我的输入数据:
data = {
"key1": {
"subfield1": 4,
"subfield2": {"subfield1": 4,
"subfield2": "hello"
},
},
"key2": 325,
}然后,通过使用python generator,我可以使用以下命令生成嵌套的键组合和值:
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然后对数据使用该函数:
from pprint import pprint
pprint(dict(flatten_dict(data)))输出中的结果:
{'key1.subfield1': 4,
'key1.subfield2.subfield1': 4,
'key1.subfield2.subfield2': 'hello',
'key2': 325}https://stackoverflow.com/questions/65203641
复制相似问题