ホームページ  >  記事  >  バックエンド開発  >  入れ子になった辞書でファイルを検索すると、再帰的 Python 関数が何も返さないのはなぜですか?

入れ子になった辞書でファイルを検索すると、再帰的 Python 関数が何も返さないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 08:29:02544ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。