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