无法在python中更新list元素的值

时间:2016-03-11 13:01:03

标签: python list

有人可以解释为什么在调试模式下发生下面提到的行为,为什么我不能更新列表元素值:

enter image description here

我不知道,我做错了什么? 我的代码:

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

2 个答案:

答案 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游标。