假设我有以下字典:
a={'brother': {'name': 'paskal', 'surname': 'leonis'},
'family': {'parents': {'father': 'telis',
'mother': 'xrisanthi',
'name': 'dimitris'}},
'name': 'alekos'}
所需的输出是获取列表:
[['paskal',1],['dimitris',2],['alekos',0]]
所以我想要的是获取所有具有 name
的键的值以及找到它们的键的级别(从零开始)
到目前为止,我已经成功获得了值,但发现的级别不正确。我正在使用以下代码:
from six import iteritems
def findKey_printValue(key, document,c=0):
if isinstance(document, dict):
for k, v in iteritems(document):
if k == key:
yield [v,c]
elif isinstance(v, dict):
c+=1
for result in findKey_printValue(key, v,c):
yield result
In [125]:list(findKey_printValue('name',a))
Out[125]:[['dimitris', 2], ['paskal', 2], ['alekos', 2]]
有什么帮助吗?
最佳答案
您需要确保 c
变量仅在您下降一个级别时增加。当您返回堆栈时,c
不应更改。
修改这个:
c+=1
for result in findKey_printValue(key, v,c):
yield result
为此:
for result in findKey_printValue(key, v,c+1):
yield result
关于python - 如何获取嵌套字典中特定键值的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206734/