/ / No se puede actualizar el valor del elemento list en python - python, list

No se puede actualizar el valor del elemento list en python - python, list

Alguien puede explicar por qué ocurre el comportamiento mencionado a continuación, en el modo de depuración, por qué no puedo actualizar un valor de elemento de lista:

enter image description here

No entiendo, ¿qué estoy haciendo mal? Mi código:

 if request.method == "GET":
coordinates = mongo_harassments_utils.get_geolocated({})
count =  coordinates.count()
for i in range(coordinates.count()):
first = coordinates[i]["story"]
coordinates[i]["story"] = "Test"
second = coordinates[i]["story"]

Respuestas

1 para la respuesta № 1

En tu ejemplo coordinates no es una lista, sino una pymongo.cursor.Cursor. Debe coaccionarlo explícitamente en una lista para que el código funcione:

if request.method == "GET":
coordinates = list(mongo_harassments_utils.get_geolocated({}))
count = len(coordinates)
for i in range(len(coordinates)):
first = coordinates[i]["story"]
coordinates[i]["story"] = "Test"
second = coordinates[i]["story"]

Además, la indexación explícita a menudo se considera un anti-patrón en Python. Para tu caso enumerate es perfectamente aplicable

for i, coordinate in enumerate(coordinates):
first = coordinate["story"]
coordinate["story"] = "Test"
second = coordinate["story"]

Tenga en cuenta que con enumerate ya no necesitas hacer coordinates una lista.


0 para la respuesta № 2

Sospecho que el problema es que no es una lista. No todos los iterables son listas, y en su situación particular, las "coordenadas" se ven como un cursor mongodb.