当你递归,你需要
return的结果
_finditem
def _finditem(obj, key): if key in obj: return obj[key] for k, v in obj.items(): if isinstance(v,dict): return _finditem(v, key) #added return statement
要修复实际算法,您需要认识到如果找不到任何东西就可以
_finditem返回
None,因此您需要显式检查以防止过早返回:
def _finditem(obj, key): if key in obj: return obj[key] for k, v in obj.items(): if isinstance(v,dict): item = _finditem(v, key) if item is not None: return item
当然,如果您的
None任何词典中都有值,那将失败。在这种情况下,您可以
object()为此功能设置一个哨兵,并在找不到任何东西的情况下返回该哨兵-
然后,您可以检查
sentinel以确定是否找到了东西。



