我在處理列表時遇到了錯誤RuntimeError: maximum recursion depth exceeded in cmp
。更確切地說,p0 in points
,points.index(p0)
方法調用以及points.remove(p0)
方法調用points
列表一直在提高特定字典p0
在我的points
列表的特定索引處的錯誤。 points
列表在錯誤發生時包含4700個字典,從12000個對象列表中減去一個字典,直到錯誤發生。 p0
字典包含對列表中另一個字典的引用,該字典在返回中包含對對象的引用。 p0
字典以及它包含的參考字典在points
列表中出現兩次,在三種方法調用中的任何一種引發錯誤之前。'RuntimeError:在使用列表時,cmp'中超出了最大遞歸深度
這個錯誤來自哪裏?
編輯:這是引發錯誤的代碼。
for roadType in roadTypes:
points = roadPoints[roadType][:]
while len(roadTails[roadType]) > 0:
p0 = roadTails[roadType].pop()
p1 = p0['next']
points.remove(p0) # Where the error occurs
points.remove(p1)
while True:
p2 = find(p1, points, 0.01)
if p2:
points.remove(p2)
p3 = p2['next']
points.remove(p3)
if p3 in roadTails[roadType]:
roadTails[roadType].remove(p3)
break
else:
p0, p1 = p2, p3
continue
else: break
這裏是find
,其中dist
計算兩個點之間的距離定義。
def find(p1, points, tolerance = 0.01):
for p2 in points:
if dist(p2['coords'], p1['coords']) <= tolerance:
return p2
return False
這裏是錯誤的完整回溯:
Traceback (most recent call last):
File "app.py", line 314, in <module>
points.remove(p0) # Where the error occurs
RuntimeError: maximum recursion depth exceeded in cmp
你能告訴我們一些代碼嗎? – Eric
我編輯了這個問題。 –
p0只是一個普通的舊python字典? – XORcist