Home > Article > Backend Development > Why Does My Recursive Python Function Return None When Searching for a File in a Nested Dictionary?
In the provided Python code, a recursive function named get_path is attempting to search for a file (rqfile) in a nested dictionary (dictionary). However, when the path to the file is found and needs to be returned, the function returns None. The code is as follows:
def get_path(dictionary, rqfile, prefix=[]): for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: get_path(directory[filename], rqfile, path)
To fix this issue, the function needs to return the result of the recursive call. By default, Python functions return None if there is no explicit return statement. To return the correct path, replace the last line of the function with the following:
return get_path(directory[filename], rqfile, path)
This modification ensures that the function returns the path found during the recursive call. Here's the updated code:
def get_path(dictionary, rqfile, prefix=[]): for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: return get_path(directory[filename], rqfile, path)
The above is the detailed content of Why Does My Recursive Python Function Return None When Searching for a File in a Nested Dictionary?. For more information, please follow other related articles on the PHP Chinese website!