Я выполняю итерацию через файл JSON и удаляя элементы, если они имеют индекс, равный коду города, который в моем случае, route_code = 'LIM', он будет удален. Вот мой код, ничего не удаляя:Ошибка удаления JSON
x = -1
for j in data['routes']:
x += 1
if(j['ports'][0] == route_code) or (j['ports'][1] == route_code):
print("inside of loop")
print(data['routes'][x])
print(x)
Это возвращаемое значение, прежде чем удалить элементы:
inside of loop
{'distance': 2453, 'ports': ['SCL', 'LIM']}
0
inside of loop
{'distance': 4231, 'ports': ['LIM', 'MEX']}
1
inside of loop
{'distance': 1879, 'ports': ['LIM', 'BOG']}
2
Left for loop
[{'distance': 2453, 'ports': ['SCL', 'LIM']}, {'distance': 4231, 'ports': ['LIM', 'MEX']}, {'distance': 1879, 'ports':
Теперь, вот мой код, когда я удалить элементы, я добавил одну строку в нижней части:
x = -1
for j in data['routes']:
x += 1
if(j['ports'][0] == route_code) or (j['ports'][1] == route_code):
print("inside of loop")
print(data['routes'][x])
print(x)
del data['routes'][x]
Теперь, вот моя возвращаемое значение:
inside of loop
{'distance': 2453, 'ports': ['SCL', 'LIM']}
0
inside of loop
{'distance': 1879, 'ports': ['LIM', 'BOG']}
1
Left for loop
[{'distance': 4231, 'ports': ['LIM', 'MEX']}, {'distance': 2499, 'ports': ['MEX', 'LAX']}, {'distance': 2714,
Как вы можете видеть, добавив оператор delete, оператор if был достигнут только 2 раза вместо 3. Поэтому индекс, содержащий ['Lim', 'Mex'], не удаляется. Почему это происходит?