Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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中是不可编辑的错误_Python_Design Patterns_Iterable_Object Type - Fatal编程技术网

';非类型';对象在Python中是不可编辑的错误

';非类型';对象在Python中是不可编辑的错误,python,design-patterns,iterable,object-type,Python,Design Patterns,Iterable,Object Type,我试图在路径列表中找到最短的列表,但收到一个错误(“NoneType”对象在Python中不是iterable错误)。此函数用于“图形模式”或“搜索算法”查找到目标的最短路径。 请让我知道我做错了什么。 谢谢 顶点G已从相邻列表中丢失。修改邻接列表并从函数返回路径后,您将能够得到正确的结果 graph={'A':['B','C'],'B':['F','D','I'],'C':['D','E','D':['H'],'F':['I'],'E':['G'],'I':['H'],'D':['H'],'H

我试图在路径列表中找到最短的列表,但收到一个错误(“NoneType”对象在Python中不是iterable错误)。此函数用于“图形模式”或“搜索算法”查找到目标的最短路径。 请让我知道我做错了什么。 谢谢


顶点
G
已从相邻列表中丢失。修改邻接列表并从函数返回
路径
后,您将能够得到正确的结果

graph={'A':['B','C'],'B':['F','D','I'],'C':['D','E','D':['H'],'F':['I'],'E':['G'],'I':['H'],'D':['H'],'H':['G'],'G':[]
def查找所有路径(图形、开始、结束、路径=[]):
路径=路径+[开始]
如果开始=结束:
返回[路径]
路径=[]
对于图形[start]中的节点:
如果节点不在路径中:
newpath=查找所有路径(图形、节点、结束、路径)
如果是新路径:
对于newpath中的newpath:
append(newpath)
返回路径
图形
{'A':['B','C'],
“B”:[F”,“D”,“I'],
'C':['D','E','G'],
'D':['H'],
“F”:[I'],
“E”:[G'],
“I”:[H'],
'H':['G'],
'G':[]}
path=find_all_路径(图形,'A','H',[])
输出:

路径
[A',B',F',I',H'],
[A',B',D',H'],
[A',B',I',H'],
['A'、'C'、'D'、'H']
要查找最短路径之一,可以使用

min(路径,键=len)

开始、结束和路径的值是什么?您需要在函数的末尾返回一些内容,否则在递归中可能没有新路径。请发布回溯。Python提供了详细的错误信息,请转发。此外,考虑在程序开始时添加<代码>打印(图、开始、结束、路径)< /代码>。它将显示输入参数是什么。我刚刚尝试将“G:[]”添加到字典中,但它仍然给出相同的错误。谢谢你的建议!你能试试我的代码吗,正如你所看到的,它工作得非常好。我还做了其他修改,不仅仅是加入了
G
graph = {'A':['B','C'],'B':['F','D','I'],'C':['D','E','G'],'D':['H'],'F':['I'],'E':['G'],'I':['H'],'D':['H'],'H':['G']} 




def find_all_paths(graph, start, end, path=[]):

        path = path + [start]
        if start == end:
            return [path]
        if start not in graph:
            return []
        paths = []
        for node in graph[start]:
            if node not in path:
                newpaths = find_all_paths(graph, node, end, path)
                for newpath in newpaths:
                    paths.append(newpath)

        minList=min(paths, key= len)
        print(minList)