python - 在 Python 中访问嵌套键

标签 python dictionary nested

我有一个嵌套字典如下

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

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

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

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

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

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

最佳答案

keys()doesn't work that way.

keys()

Return a new view of the dictionary’s 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']

关于python - 在 Python 中访问嵌套键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753809/

相关文章:

Python ArgParse Subparsers 并链接到正确的函数

python - 为什么有时 Python 子进程在运行进程后无法获得正确的退出代码?

python - 带有列表的 Pandas 数据框中的唯一项目

python - 无法从使用 json 的 URL api 获取信息?

f# - 如何在 F# 中实现 “efficient generalized fold”?

c++ - C++中的动态嵌套?

python - Django/WeasyPrint : Bangla Font Rendering Issue

javascript - 客户互动矢量图

python - 使用python从语料库中提取最频繁的单词

c - 访问嵌套结构