繁体   English   中英

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

[英]Python - getting keys AND subkeys from nested dictionary

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

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使用了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 中有多个(和可变数量)级别,那么您将必须使用递归来获取所有键。

无论深度如何,下面的函数都会返回 dict 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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM