擅长:python、mysql、java
<p>正如您在评论中发现的,问题是最后一个操作<code>edgesList.append((id,start,end))</code>。在</p>
<p>这似乎是一个数据类型的问题:一个大字典因设计而变慢。看看<a href="https://stackoverflow.com/questions/16256913/improving-performance-of-very-large-dictionary-in-python">here</a>。在</p>
<p>但是很高兴您可以使用双端队列(deque)来代替。<a href="https://docs.python.org/2/library/collections.html#collections.deque" rel="nofollow">deque documentation</a>:“Deques支持线程安全、内存高效的附件和pop,在任何一个方向上都具有几乎相同的O(1)性能。”</p>
<p>在代码中,这意味着您可以初始化一个deque并以高性能附加到它。在</p>
<pre><code>edgesList = deque()
for featureId in edges:
edgeFeatureId = [k for k, v in edges.iteritems() if k == featureId][0]
edgeStartPoint = [v for k, v in nodes.iteritems() if k == edges[featureId][0]][0]#start point
edgeEndPoint = [v for k, v in nodes.iteritems() if k == edges[featureId][1]][0]#end point
edgesList.append((edgeFeatureId,edgeStartPoint,edgeEndPoint))
</code></pre>