簡體   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