首頁 >後端開發 >Python教學 >為什麼我的遞歸 Python 函數在巢狀字典中搜尋檔案時不回傳任何內容?

為什麼我的遞歸 Python 函數在巢狀字典中搜尋檔案時不回傳任何內容?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-16 08:29:02626瀏覽

Why Does My Recursive Python Function Return None When Searching for a File in a Nested Dictionary?

Python 中傳回None 的遞歸函數

問題

在提供的Python 程式碼中,名為get_path 的遞歸函數正在嘗試搜尋檔案( rqfile)在巢狀字典(dictionary)中。但是,當找到檔案的路徑並需要返回時,函數將傳回 None。程式碼如下:

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)

要解決此問題,函數需要傳回遞歸呼叫的結果。預設情況下,如果沒有明確 return 語句,Python 函數將會傳回 None。若要返回正確的路徑,請將函數的最後一行替換為以下內容:

return get_path(directory[filename], rqfile, path)

此修改可確保函數傳回在遞歸呼叫期間找到的路徑。這是更新後的程式碼:

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)

以上是為什麼我的遞歸 Python 函數在巢狀字典中搜尋檔案時不回傳任何內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn