【发布时间】:2020-06-24 02:14:53
【问题描述】:
distances = { "u":0,
"v":0,
"w":0,
"x":0,
"y":0,
"z":0 }
Np = ["u"]
nodes = ["u","v","w","x","y","z"]
max = 20;
for node in nodes:
if (node+"-u") in dictionary:
distances[node] = dictionary["u-"+node]
else:
distances[node] = max;
while Np != nodes:
for node in nodes:
if node not in Np:
if (distances[node] < max):
min = distances[node]
minnode = node;
max = min;
Np.append(minnode);
print(Np);
for node in nodes:
if node not in Np:
if (node+"-"+minnode) in dictionary:
distances[node] = min(distances[node], distances[minnode] + dictionary[node+"-"+minnode]);
请帮助我哪里出错了,我在最后一行代码出现错误:
distances[node] = min(distances[node], distances[minnode] + dictionary[node+"-"+minnode]);
这是说我正在做'int'的typeError,但我追溯代码开始,我看不出有什么问题。我正在使用字典对象和列表对象,也许这就是原因?请看代码并修改
【问题讨论】:
-
min = distances[node]你重新定义了min,所以它是一个数字,而不是计算最小值的函数。 -
不要使用与标准函数和类型同名的变量。
-
max,min都是内置函数。我们会避免覆盖它。
标签: python list dictionary typeerror