首页 > 解决方案 > 在 Python 中访问嵌套键

问题描述

我有一个嵌套字典如下

entry = {
    0: {"Q": 0},
    1: {"W": 2, "E": 3, "N": 5, "S": 4, "Q": 0},
    2: {
        "N": {
            "Q": {"E"}
        }
    },
}

当我尝试仅访问 key 的密钥1时,我得到以下信息:

>>> print(entry[1].keys())
dict_keys(['W', 'E', 'N', 'S', 'Q'])

但是对于键 2,它只返回顶部键而不是嵌套键。

>>> print(entry[2].keys())
dict_keys(['N'])  

为什么它不返回字典的嵌套键?

标签: pythondictionarynested

解决方案


keys()不能那样工作。

键()

返回字典键的新视图

您的嵌套字典是一个完全独立的字典,您可以使用自己的方法获取自己的键keys()

entry[2]['N'].keys()

如果要递归获取嵌套字典中的所有键,则必须为此实现一个方法:

entry = {0: {"Q": 0},
         1: {"W": 2, "E": 3, "N": 5, "S": 4, "Q": 0},
         2: {"N": { "Q":{"E"}}},
}


def rec_keys(dictio):
    keys = []
    for (key,value) in dictio.items():
        if isinstance(value, dict):
            keys.extend(rec_keys(value))
        else:
            keys.append(key)
    return keys

print(rec_keys(entry))
# ['Q', 'Q', 'W', 'N', 'S', 'E', 'Q']

推荐阅读