我試圖從邏輯上遍歷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。如果你想成爲專業人士,請閱讀它;-) –