name_list = [{'name': 'John'}, {'name': 'Johan'}, {'name': 'John'}]
for i in xrange(len(name_list)):
if name_list[i]["name"] == "John":
del name_list[i]
在第一次识别John之后,它会删除该对象,但会突破该功能。如何继续遍历到最后并删除每个名为John的JSON对象?
非常感谢你们!
答案 0 :(得分:5)
您不应该从当前正在迭代的序列中删除项目。如果没有你不想要的元素,建立一个新词典会更安全:
new_list = [d for d in name_list if d['name'] != 'John']
答案 1 :(得分:0)
这将为您提供所需的信息。诀窍是首先从列表末尾删除(最高索引)。
name_list = [{'name': 'John'}, {'name': 'Johan'}, {'name': 'John'}]
for index, i in enumerate(reversed(name_list)):
if i['name'] == 'John':
del name_list[index]