TypeError: iteration over non-sequence in Python

TypeError: iteration over non-sequence in Python

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

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

  <edge id="4260662#2" from="1977648762" to="2600872721"/>

我只需要从本例中的这一行中提取 id 值:4260662#2,所以我尝试使用 for 循环,我将这一行放在名为 "ch" 的字符串,但是当我执行 "for i in ch:" 时,它显示了一个错误: TypeError: iteration over non-sequence.

我尝试了很多解决方案,但都没有用,你能帮帮我吗?

closestEdgesumolib.net.edge.Edge class 的实例。它不是字符串,不能通过迭代等方式处理。

幸运的是 Edge class 包含一个方法,getID(),可用于访问 id:

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

print(closestEdge.getID())

在相关说明中,您无需对边列表进行排序即可找到最近的(距离最短的)。相反,您可以使用带有 key 参数的 min() 内置函数:

from operator import itemgetter

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

不仅这段代码更易读,而且min()的时间复杂度O(n),比O(n log n) 对于 sorted().