TypeError:迭代Python中的非序列

时间:2017-04-16 10:25:42

标签: python sumo

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

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

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

我只需要从这一行中提取id值: 4260662#2 ,所以我尝试使用for循环,我把这行放在一个名为“ch”的字符串中但当我做“为我在ch:”时,它显示一个错误: TypeError:迭代非序列

我尝试了很多解决方案,但它们没有用,你能帮帮我吗?enter image description here

1 个答案:

答案 0 :(得分:1)

Edgesumolib.net.edge.Edge类的一个实例。它不是一个字符串,不能通过例如迭代它来对待它。

幸运的是distancesAndEdges = sorted([(dist, edge) for edge, dist in edges]) dist, closestEdge = distancesAndEdges[0] print(closestEdge.getID()) 类包含一个方法getID(),可以用来访问id:

key

在相关说明中,您无需对边列表进行排序以找到最接近的边(最小距离)。相反,您可以将min()内置函数与from operator import itemgetter dist, closestEdge = min(edges, key=itemgetter(1)) print(closestEdge.getID()) 参数一起使用:

min()

此代码不仅更具可读性,而且sorted()具有时间复杂度 O(n),这比 O(n log n)更快$('img.propImg').each(function(){ enter code here }