在JSON中删除多个对象

时间:2015-06-29 15:37:10

标签: python json

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对象?

非常感谢你们!

2 个答案:

答案 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]