bugfix> python-3.x > 投稿

次のような辞書を取る関数があります:

result = {
    "testsUntaken" = ["format", "structure"],
    "testsFailed" = []
    "testsPassed" = []
    "otherstuff" = "otherstuff"
}

これが機能です。

def take_tests(result):
    """Recursively runs the tests in the testsUntaken list until it is empty"""
    testsList = {
        "format": allowed_file,
        "structure": allowed_structure
    }
    if len(result["testsUntaken"]) > 0:
        test = result["testsUntaken"][0]
        if testsList[test](result):
            result["testsPassed"].append(test)
        else:
            result = rejection(result, test)
        result["testsUntaken"].remove(test)
        result = take_tests(result)
    return result
if __name__ == "__main__":
    print("something unrelated")

驚いたことに、この関数は別のファイルから呼び出すと完全に機能しますが、「メイン「私は得る:

 File "my_file.py", line 56, in take_tests
    if len(result["testsUntaken"]) > 0:
TypeError: string indices must be integers

回答 1 件
  • これは警戒ですが、クラスとして書き直しただけでうまくいきました。初期化された結果ディクショナリが既にスコープにある場合、問題はないようです。

あなたの答え