/ / Не вдається оновити значення елемента списку в python - python, list

Не вдається оновити значення елемента списку в python - python, list

Чи може хтось пояснити, чому нижчезазначена поведінка відбувається в режимі налагодження, чому я не можу оновити значення елемента списку:

введіть опис зображення тут

Я не розумію, що я роблю неправильно? Мій код:

 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"]

Відповіді:

1 для відповіді № 1

У вашому прикладі coordinates - це не список, а а pymongo.cursor.Cursor. Вам потрібно явно примусити його до списку, щоб код працював:

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"]

Крім того, явна індексація часто вважається антидіаграмою в Python. Для вашого випадку enumerate чудово застосовується

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

Зверніть увагу, що з enumerate вам більше не потрібно робити coordinates список.


0 для відповіді № 2

Я підозрюю, що проблема полягає в тому, що це не список. Не всі ітерабелі є списками, і у вашій конкретній ситуації "координати" схожі на курсор mongodb.