首页 > 解决方案 > 字典不可下标

问题描述

我有一个很大的代码,我需要在其中使用这个函数,这个函数非常简单,它以 ( dict, int) 作为参数并在其中创建一个字典,我们必须在程序运行时对其进行初始化。错误恰好发生在candidate["permutation"] = stochastic_swipe(best["permutation"])我已经检查过Best的不是 None 的行中,而这里的 None 对象是candidate.

def ILS(best, maxIter):
    while maxIter>0:
        candidate ={}
        candidate["permutation"] = stochastic_swipe(best["permutation"])
        candidate["cost"] = total_cost(candidate["permutation"])
        if candidate["cost"] < best["cost"]:
            best = candidate
        maxIter -=1

    return best

Best就这样被通过 {'permutation': [0, 799, 334, 816], 'cost': 19208.973827922397}

标签: pythonpython-3.xdictionary

解决方案


显然,您正在调用此函数None作为第一个参数。我们可以从您的代码中看到candidate它始终是一个字典,但直到这一行:

        best = candidate

被执行,best就是你传递给函数的内容。


推荐阅读