python中的深度优先搜索错误:关键错误7
我编写了以下python程序来对给定的图形执行DFS,但执行后会出现错误:Key error 7。我的代码有什么问题python中的深度优先搜索错误:关键错误7,python,algorithm,Python,Algorithm,我编写了以下python程序来对给定的图形执行DFS,但执行后会出现错误:Key error 7。我的代码有什么问题 output=[] graph = { 9:[8,7,6], 8:[5,4], 6:[3,2], 5:[1,0] } def dfs(graph,root): stack=[] visited=set() stack.append(root)
output=[]
graph = {
9:[8,7,6],
8:[5,4],
6:[3,2],
5:[1,0]
}
def dfs(graph,root):
stack=[]
visited=set()
stack.append(root)
output.append(str(root))
visited.add(root)
while not(stack==[]):
for item in graph[root]:
if item not in visited:
stack.append(item)
visited.add(item)
output.append(str(item))
if set(graph[item]).union(visited)==visited:
stack.pop(-1)
root=stack[len(stack)-1]
continue
root=item
dfs(graph,9)
print(" ".join(output))
在添加@amit给出的建议后,问题仍然没有得到解决。我已经编写了以下代码,它给出了不正确的输出,请帮助
output=[]
graph = {
1:[2,3],
2:[4,5],
3:[6,7],
4:[],
5:[],
6:[],
7:[]
}
def dfs(graph,root):
stack=[]
visited=set()
stack.append(root)
output.append(str(root))
visited.add(root)
while not(stack==[]):
for item in graph[root]:
if item not in visited:
stack.append(item)
visited.add(item)
output.append(str(item))
if set(graph[item]).union(visited)==visited:
stack.pop(-1)
if not(stack==[]):
root=stack[len(stack)-1]
else:
break
continue
root=item
dfs(graph,1)
print(" ".join(output))
图形实现没有将
d_out(v)=0的节点作为键
因此,在这方面:
if set(graph[item]).union(visited)==visited:
当您将7(或4)作为项
时,您尝试访问图形[7]
——但没有这样的键
您可以通过将图形实现更改为对所有键(包括没有外边缘的键)具有键:[]
,或者在尝试访问它之前向条件添加一个检查,以检查项是否在图形中。您的图形实现没有具有d\u out(v)的节点=0
作为键
因此,在这方面:
if set(graph[item]).union(visited)==visited:
当您将7(或4)作为项
时,您尝试访问图形[7]
——但没有这样的键
您可以通过更改图形实现,使所有键(包括没有外边缘的键)都有一个键:[
,或者,在尝试访问之前,通过向条件中添加一个检查来检查项是否在图形中。您没有定义从顶点编号7开始的边。您没有定义从顶点编号7开始的边。这可能是由于缺少索引值或列序列号。
您可以做的是在数据帧中添加索引列,然后使用iloc语法循环遍历每一行。
例如:df.iloc['index number'].columnname这可能是由于缺少索引值或列序列号。
您可以做的是在数据帧中添加索引列,然后使用iloc语法循环遍历每一行。
例如:df.iloc['index number'].columnname你能提供一个更全面的错误报告吗?你能提供一个更全面的错误报告吗?这并不能回答这个问题。要评论或要求作者澄清,请在他们的帖子下方留下评论——你可以随时在自己的帖子上发表评论,一旦你有足够的评论,你就可以发表评论了。@codegeek实际上,我认为这是试图回答这个问题。它简短而简单——也许是错的——但它确实试图回答,但这并不能回答这个问题。要评论或要求作者澄清,请在他们的帖子下方留下评论——你可以随时在自己的帖子上发表评论,一旦你有足够的评论,你就可以发表评论了。@codegeek实际上,我认为这是试图回答这个问题。它简短而简单——也许是错的——但它确实试图回答这个问题。