![](/img/trans.png)
[英]Nested JSON with unique keys to flatten DataFrame with first 2 levels keys in columns
[英]Flatten nested json and get keys and nested keys in python
我需要从 json 中提取密钥和嵌套密钥。 这是我的示例文本:
{"Field1":"a","Field2":"b","Field3":"c","AdditionalInfo":{"Name":"foo"}}
以下代码将嵌套键添加为嵌套键和常规键: (AdditionalInfo_Name,Field1,Field2,Field3,Name)
fields = []
def flatten_dict(d):
def items():
for key, value in d.items():
if isinstance(value, dict):
for subkey, subvalue in flatten_dict(value).items():
yield key + "." + subkey, subvalue
if (key + "." + subkey) not in fields:
fields.append(key + "." + subkey)
else:
yield key, value
if key not in fields:
fields.append(key)
return dict(items())
我该如何修改这个 function 所以我得到这个? 您会注意到我不想要最后一个键 Name,因为它在我的示例文本中不存在: (AdditionalInfo_Name,Field1,Field2,Field3)
不完全清楚你在追求什么,但使用flatten_json
库会给你扁平化的字典,而且键很容易。
from flatten_json import flatten
data = {"Field1":"a","Field2":"b","Field3":"c","AdditionalInfo":{"Name":"foo"}}
flattened_dict = [flatten(d, '.') for d in [data]][0]
flattened_keys = [flatten(d, '.') for d in [data]][0].keys()
In [31]: flattened_dict
Out[31]: {'Field1': 'a', 'Field2': 'b', 'Field3': 'c', 'AdditionalInfo.Name': 'foo'}
In [32]: flattened_keys
Out[32]: dict_keys(['Field1', 'Field2', 'Field3', 'AdditionalInfo.Name'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.