【发布时间】:2013-09-20 01:54:53
【问题描述】:
当值可能在嵌套字典中多次存在时,我正在努力处理嵌套字典,并为特定值返回嵌套的父键。 例如:
example_dict = { 'key1' : 'value1',
'key2' : 'value2',
'key3' : { 'key3a': 'value3a' },
'key4' : { 'key4a': { 'key4aa': 'value4aa',
'key4ab': 'value4ab',
'key4ac': 'value1'},
'key4b': 'value4b'}
}
您会注意到 'value1' 在上面的字典中出现了两次,我想创建一个函数来返回单个列表或一系列列表,以标识不同的父键,在这种情况下将是 'key1' 和 ('key4', 'key4a', key4ac)。
此类问题已在本网站的其他地方处理过,当时正在寻找的值仅出现一次,并且可以通过以下递归函数轻松处理:
def find_key(d,key):
for k,v in d.items():
if isinstance(v,dict):
p = find_key(v,key)
if p:
return [k] + p
elif v == key:
return [k]
print find_key(example_dict,'value4ac').
如果你在字典上运行上面的代码,我只能得到一个父键的答案。 任何帮助将非常感激, 谢谢!
【问题讨论】:
-
您是反复进行此类搜索,还是只进行一次?如果你做的不止一个,你几乎肯定会想要创建一个反向映射字典,然后访问它,而不是每次都蛮力搜索整个字典。
标签: python dictionary nested key dictionary-comprehension