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.
我尝试了很多解决方案,但都没有用,你能帮帮我吗?
closestEdge
是 sumolib.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()
.
我有一个代码,它使用函数根据地理坐标计算站点 ID 的最近边缘。
输出是这样一行(格式xml):
<edge id="4260662#2" from="1977648762" to="2600872721"/>
我只需要从本例中的这一行中提取 id 值:4260662#2,所以我尝试使用 for 循环,我将这一行放在名为 "ch" 的字符串,但是当我执行 "for i in ch:" 时,它显示了一个错误: TypeError: iteration over non-sequence.
我尝试了很多解决方案,但都没有用,你能帮帮我吗?
closestEdge
是 sumolib.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()
.