我试图从逻辑上遍历Python中的JSON并返回等于值的任何字符串值的路径。我试图递归遍历,但如果多个元素的比较匹配,它只首先返回他:Python - 与字符串匹配的所有JSON元素的返回路径
test_json = {
"a": {
"b": {
"c": {
"d": "foo"
}
}
},
"1": {
"2": {
"3": "bar"
}
},
"a1" : "foo"
}
def searchDict(d, path):
for k,v in d.iteritems():
if isinstance(v, dict):
path.append(k)
return searchDict(v, path)
else:
if v == "foo":
path.append(k)
path.append(v)
return path
print searchDict(test_json, [])
我想这不得不返回类似的能力:
a -> b -> c -> d -> foo
a1 -> foo
但相反,它只是遍历第一个子字典:
['a', 'b', 'c', 'd', 'foo']
这可能比我做得更容易,只是在逻辑上解决它有困难。有任何想法吗?
啊,是的。我知道这很简单。放弃回报是有道理的。谢谢! – ev0lution37
干得好;-)最好的解决方案是使用python生成器和yield。如果你想成为专业人士,请阅读它;-) –