Yan*_*ick 2 recursion dictionary python-3.x
我有一个深层嵌套的dict,需要遍历它,并返回与key参数(函数的第二个参数)相对应的值。
例如,
tree = {"a": 12, "g":{ "b": 2, "c": 4}, "d":5}
Run Code Online (Sandbox Code Playgroud)
tree_traverse(tree, "d") 应该返回5
这是我的代码:
def tree_traverse(tree, key):
for k,v in tree.items():
if isinstance(v, dict):
tree_traverse(v, key)
elif k == key:
return v
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果函数在通过最深层的嵌套dict进行迭代后没有找到匹配的键,则该函数将返回None。我不希望它在找到匹配的键之前返回任何内容。
我没有在另一个线程中找到解决方案,其中大多数使用print语句并且不返回任何内容,因此我想它避免了这个问题。
您必须检查递归调用是否确实找到了某些东西,以便您可以继续循环。例如,尝试以下操作:
def tree_traverse(tree, key):
for k, v in tree.items():
if k == key:
return v
elif isinstance(v, dict):
found = tree_traverse(v, key)
if found is not None: # check if recursive call found it
return found
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |