我试图在循环中的列表中建模一个对象,但它不起作用。
data = []
data.append({
'one': 1,
'two': 2
})
data.append({
'one': 3,
'two': 4
})
data.append({
'one': 5,
'two': 6
})
for d in data:
if d['one'] == 3:
del d这样删除我的对象是不可能的?del d
我找到的唯一解决方案是创建一个计数器,然后删除数据列表del data[x]中的索引。
发布于 2018-10-15 10:13:49
发布于 2018-10-15 10:13:42
您可以使用过滤器
data = filter(lambda x: x['one'] != 3, data)发布于 2018-10-15 10:14:43
在迭代列表时,不能从列表中删除项目,因为列表索引随删除元素的变化而变化。此外,del d只需删除名称d,字典仍将存在于列表中。
这里最好的解决方案是创建一个新列表,并过滤掉不需要的元素:
data = [d for d in data if d['one'] != 3]如果修改现有列表data很重要,因为对它的其他引用也必须查看更改,则可以使用片分配来更新原始列表,但通常不需要这样做:
data[:] = [d for d in data if d['one'] != 3]https://stackoverflow.com/questions/52814341
复制相似问题