我有一个巨大的字典,其中包含许多嵌套的字典——就像一棵巨大的树,深度未知。
我需要一个函数,类似于 `find_value()`,它接受 `dict` 和 `value`(作为字符串),并返回一个列表,其中每个列表都是“路径”(从第一个键到找到值的键或键值的连续链)。如果没有找到,则返回空列表。
我编写了以下代码:
我需要一个函数,类似于 `find_value()`,它接受 `dict` 和 `value`(作为字符串),并返回一个列表,其中每个列表都是“路径”(从第一个键到找到值的键或键值的连续链)。如果没有找到,则返回空列表。
我编写了以下代码:
def find_value(dict, sought_value, current_path, result):
for key,value in dict.items():
current_path.pop()
current_path.append(key)
if sought_value in key:
result.append(current_path)
if type(value) == type(''):
if sought_value in value:
result.append(current_path+[value])
else:
current_path.append(key)
result = find_value(value, sought_value, current_path, result)
current_path.pop()
return result
我调用这个函数进行测试:
result = find_value(self.dump, sought_value, ['START_KEY_FOR_DELETE'], [])
if not len(result):
print "forgive me, mylord, i'm afraid we didn't find him.."
elif len(result) == 1:
print "bless gods, for all that we have one match, mylord!"
由于某些不可解释的原因,我的这个函数实现在一些测试中失败了。我开始进行调试,发现即使current_path打印出正确的结果(我已经检查过了!),但结果仍然不可解释地损坏了。也许是递归魔法导致的?
有人能帮我解决这个问题吗?也许有一个简单的解决方案可以完成我的任务?