Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的深度优先搜索错误:关键错误7_Python_Algorithm - Fatal编程技术网

python中的深度优先搜索错误:关键错误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)

我编写了以下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.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实际上,我认为这是试图回答这个问题。它简短而简单——也许是错的——但它确实试图回答这个问题。