有人可以解释为什么在调试模式下发生下面提到的行为,为什么我不能更新列表元素值:
我不知道,我做错了什么? 我的代码:
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"]
答案 0 :(得分: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
列表。
答案 1 :(得分:0)
我怀疑问题在于它不是一个列表。并非所有迭代都是列表,并且在您的特定情况下,“坐标”看起来像一个mongodb游标。