我试图创建多个图形并使用Dijkstra的。但是我得到了一个错误:NoneType对象没有属性“set\u distance”。非常奇怪的是,列表中的第一项['2001A1']运行正常,但是当列表长度超过1时,它就会因为错误而崩溃。如果我只在列表中的一个项目上运行代码,它也可以工作。打印出我的顶点,图表显示有我的所有关键点的顶点实例。。。有什么我不知道的吗?为什么我不能这样做不止一次?为什么当我试图获取我的顶点对象时,当我的顶点映射有键{1:(vertex object)}时,返回null?你知道吗
def create_graph(q,y,pop,psub,a,b,c):
a = Graph(q,y,pop,psub,a,b,c)
for i in range(0,9):
a.add_vertex(i)
return a
def run_dijkstras(graph,data):
for i in data:
try:
year = int(i[0:4])
print year
except:
print i
rest = i[4:]
graph.add_edge(year,rest)
quarter = graph.get_quarter()
print graph.vert_dict
print quarter
print graph.get_vertex(quarter)
print str(graph.get_vertex(quarter))
dijkstra(graph,graph.get_vertex(quarter))
target = graph.get_vertex(quarter+4)
path = [target.get_id()]
shortest(target, path)
if len(path) == 1:
path = "NULL"
return [path,(str(target.get_distance())),data]
i = 2001
for j in range(1,5):
for datacombo in ([['2001A1'], ['2001R4']]):
a = run_dijkstras(create_graph(j,i,10,1,.05,-.1,-.5),datacombo)
result,score = a[0],a[1]
if score == 9999999999999:
score = "NULL"
score = score.ljust(15)
datacombo = generate_matrix(datacombo)
i = str(i).ljust(5)
j = str(j).ljust(2)
datacombo=re.sub("\[|\]|'","",str(datacombo)).ljust(100)
result=re.sub("\[|\]|'","",str(result)).ljust(25)
print(i,j,result,score,datacombo)
错误日志:
{0: <__main__.Vertex instance at 0x0000000002439DC8>, 1: <__main__.Vertex instan
ce at 0x0000000002439CC8>, 2: <__main__.Vertex instance at 0x0000000002439C88>,
3: <__main__.Vertex instance at 0x0000000002439C08>, 4: <__main__.Vertex instanc
e at 0x0000000002439E48>, 5: <__main__.Vertex instance at 0x0000000002439E88>, 6
: <__main__.Vertex instance at 0x0000000002439EC8>, 7: <__main__.Vertex instance
at 0x0000000002439F08>, 8: <__main__.Vertex instance at 0x0000000002439F48>}
1
None
None
Traceback (most recent call last):
File "dijkstras3.py", line 282, in <module>
a = run_dijkstras(create_graph(j,i,10,1,.05,-.1,-.5),datacombo)
File "dijkstras3.py", line 190, in run_dijkstras
dijkstra(graph,graph.get_vertex(quarter))
File "dijkstras3.py", line 132, in dijkstra
start.set_distance(0)
AttributeError: 'NoneType' object has no attribute 'set_distance'
目前没有回答
相关问题 更多 >
编程相关推荐