python - 在 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'])
为什么它不返回字典的嵌套键?
解决方案
键()
返回字典键的新视图
您的嵌套字典是一个完全独立的字典,您可以使用自己的方法获取自己的键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']
推荐阅读
- c++ - 可以将 lambdas 用作非类型模板参数吗?
- dialogflow-es - Dialogflow 实现答案未达到 Telegram、Facebook 和 Slack 集成
- vb.net - 如何跟踪媒体播放器播放列表上的文件名并获取当前播放文件索引
- c - c != '\n' 条件在“for”循环(C 语言)中的作用是什么?
- ios - 如何在 iPadOS 上捕获鼠标事件
- java - 如何删除 inputType editText 中的自动填充
- python - 如何使用转换和计数从字典创建转换矩阵
- python - 数组中的图像未显示正确的结果
- angular - 类型 'void' 不可分配给类型 'ObservableInput
' - scala - 交叉构建依赖于特定库的不同版本的项目