Python - 从嵌套字典获取键和子键

Python - getting keys AND subkeys from nested dictionary

我有一段 JSON 文件,由于 JSON 是一个字典,我想从中获取键和子键。

JSON代码:

{
    "Image": {
        "URL / Path": "",
        "Max_Width": 300
    },
    "Font": {
...

我想达到的目标:["Image", "Url / Path", "Max_Width", "Font", ..."]

我目前拥有的:["Image", "Font", ...]。为此,我使用了 l=[y for y in __import__('json').load(open(r'FilePath', 'r')).keys()];l

请帮忙

如果你知道字典的深度,你可以这样做:

data = {
        "Image": {
            "URL / Path": "",
            "Max_Width": 300
        },
        "Font": {}
}
all_keys = []
for k in data:
    all_keys.append(k)
    for k1 in data[k]:
        all_keys.append(k1)

这下到第二级,遍历每个键,并将其添加到结果中。但是,如果您的 JSON 中有多个(且数量可变)关卡,那么您将不得不使用递归来获取所有键。

下面的函数returns 字典中的所有键dct,不管深度如何:

def accumulate_keys(dct): # returns all the keys
    key_list = []
    def accumulate_keys_recursive(dct): # will accumulate keys in key_list
        for key in dct.keys():
            if isinstance(dct[key], dict):
                accumulate_keys_recursive(dct[key])
            else:
                key_list.append(key)
    accumulate_keys_recursive(dct)
    return key_list
print(accumulate_keys(dct))