使用 Python,我需要删除 JSON 数组中具有特定“名称”键值的所有对象。但是,我无法通过循环执行此操作。
想象一下,我想删除以下输入中名称为“坏”的所有项目:
{
'myArray' : [
{
'name' : 'good',
'value' : '1'
},
{
'name' : 'bad',
'value' : '2'
}
]
}
所以我使用以下 Python 测试用例:
myData = {'myArray': [{'name': 'good', 'value': '1'}, {'name': 'bad', 'value': '2'}]}
for a in myData['myArray']:
if (a['name'] =='bad'):
del a
print(json.dumps(myData))
我看到 myData 没有改变。
我假设这是因为我尝试删除循环的迭代器,这可能被解释器视为冒险操作,但是 Python 没有报告运行时错误或警告。
在这种情况下推荐的方法是什么?
谢谢!
最佳答案
来自 Remove element from list when using enumerate() in python 的方法之一- 对列表副本的循环称为 [:] - 也有效:
for a in myData['myArray'][:]:
if (a['name'] == u'bad'):
myData['myArray'].remove(a)
谢谢大家!
关于Python,从循环中删除具有特定键的JSON元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174334/