Accessing nested keys in Python(在 Python 中访问嵌套键)
问题描述
我有一个如下的嵌套字典
entry = {0: {"Q": 0},1: {"W": 2, "E": 3, "N": 5, "S": 4, "Q": 0},2:{N":{Q":{E"}}},}
当我尝试仅访问密钥
<预><代码>>>>打印(条目[1].keys())dict_keys(['W', 'E', 'N', 'S', 'Q'])1 的密钥时,我得到以下信息:
但是对于键 2,它只返回顶部键而不是嵌套键.
<预><代码>>>>打印(条目[2].keys())dict_keys(['N'])
为什么不返回字典的嵌套键?
keys()
不能那样工作.
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):键 = []for (key,value) in dictio.items():如果是实例(值,字典):键.扩展(rec_keys(值))别的:键.附加(键)返回键打印(rec_keys(条目))# ['Q', 'Q', 'W', 'N', 'S', 'E', 'Q']
I have a nested dictionary as below
entry = {
0: {"Q": 0},
1: {"W": 2, "E": 3, "N": 5, "S": 4, "Q": 0},
2: {
"N": {
"Q": {"E"}
}
},
}
When I try to access only the keys for the key 1
, I get the following:
>>> print(entry[1].keys())
dict_keys(['W', 'E', 'N', 'S', 'Q'])
But for key 2 it only returns the top key and not the nested key.
>>> print(entry[2].keys())
dict_keys(['N'])
Why is it not returning the nested key of the dictionary?
keys()
doesn't work that way.
keys()
Return a new view of the dictionary’s keys
Your nested dictionnary is a completely separate dict, and you can get its own keys with its own keys()
method :
entry[2]['N'].keys()
If you want to recursively get all the keys inside nested dictionnaries, you will have to implement a method for that :
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 中访问嵌套键
基础教程推荐
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 筛选NumPy数组 2022-01-01