我的字典看起来像这样:
d = {'dev':
{<dev1>:
{'mod':
{<mod1>:
{'port': [1, 2, 3]
}
}
}
<dev2>:
{'mod':
{<mod3>:
{'port': [] }
}
}
}
}
我希望能够编写一个函数,这样如果我提供了一个搜索对象,例如&#39; mod1&#39;,它会为我提供父键作为&#39; dev1&#39;。
我已经搜遍了所有的东西并尝试了很多东西,但似乎无法让它发挥作用。任何帮助将不胜感激!
我已尝试过以下链接中提到的内容:
Python--Finding Parent Keys for a specific value in a nested dictionary
答案 0 :(得分:1)
这应该有效:
def find_parent_keys(d, target_key, parent_key=None):
for k, v in d.items():
if k == target_key:
yield parent_key
if isinstance(v, dict):
for res in find_parent_keys(v, target_key, k):
yield res
用法:
d = {
'dev': {
'dev1': {
'mod': {
'mod1': {'port': [1, 2, 3]},
},
},
'dev2': {
'mod': {
'mod3': {'port': []},
},
},
},
}
print list(find_parent_keys(d, 'mod'))
print list(find_parent_keys(d, 'dev'))
输出:
['dev2', 'dev1']
[None]