Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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
TypeError:Python中对非序列的迭代_Python_Sumo - Fatal编程技术网

TypeError:Python中对非序列的迭代

TypeError:Python中对非序列的迭代,python,sumo,Python,Sumo,我有一个代码,它使用函数根据地理坐标计算站点id的最近边 输出是这样一行(xml格式): 我只需要从本例中的这一行中提取id值:4260662#2,因此我尝试使用for循环,我将该行放入名为“ch”的字符串中,但当我执行“for I in ch:”时,它显示了一个错误:类型错误:非序列上的迭代 我尝试了许多解决方案,但都不起作用,你能帮我吗?closestEdge是该类的一个实例。它不是一个字符串,不能通过(例如)对其进行迭代来处理 幸运的是,Edge类包含一个方法,可用于访问id: dis

我有一个代码,它使用函数根据地理坐标计算站点id的最近边

输出是这样一行(xml格式):


我只需要从本例中的这一行中提取id值:4260662#2,因此我尝试使用for循环,我将该行放入名为“ch”的字符串中,但当我执行“for I in ch:”时,它显示了一个错误:类型错误:非序列上的迭代


我尝试了许多解决方案,但都不起作用,你能帮我吗?

closestEdge
是该类的一个实例。它不是一个字符串,不能通过(例如)对其进行迭代来处理

幸运的是,
Edge
类包含一个方法,可用于访问id:

distancesAndEdges = sorted([(dist, edge) for edge, dist in edges])
dist, closestEdge = distancesAndEdges[0]

print(closestEdge.getID())
在相关注释中,您不需要对边列表进行排序以找到最近的边(距离最小的边)。相反,您可以将内置函数与
键一起使用
参数:

from operator import itemgetter

dist, closestEdge = min(edges, key=itemgetter(1))
print(closestEdge.getID())
这段代码不仅可读性更好,而且
min()
的时间复杂度为O(n),比
sorted()
的O(n log n)快。请将代码的所有相关部分粘贴为文本,而不是图像。看见关于您的代码,似乎与您的想法相反,closestEdge不是字符串,但可能是某个对象。。。。
from operator import itemgetter

dist, closestEdge = min(edges, key=itemgetter(1))
print(closestEdge.getID())