我有一个代码,它使用函数根据地理坐标计算工作站ID的最近边缘。
输出是这样的一行(格式为xml):
<edge id="4260662#2" from="1977648762" to="2600872721"/>
我只需要从这一行中提取id值: 4260662#2 ,所以我尝试使用for循环,我把这行放在一个名为“ch”的字符串中但当我做“为我在ch:”时,它显示一个错误: TypeError:迭代非序列。
答案 0 :(得分:1)
Edge
是sumolib.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
}
。