【发布时间】:2016-06-21 15:34:00
【问题描述】:
我正在尝试在 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']
这可能比我做的要容易,只是在逻辑上解决它有困难。有什么想法吗?
【问题讨论】:
标签: python json recursion traversal