首页 > 解决方案 > Python,从循环中删除具有特定键的 JSON 元素

问题描述

使用 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 没有报告运行时错误或警告。

在这种情况下推荐的方法是什么?

谢谢!

标签: pythonjsonfor-loop

解决方案


在 python 中使用 enumerate() 时从列表中删除元素的一种方法- 在称为 [:] 的列表副本上循环 - 也可以:

for a in myData['myArray'][:]:
  if (a['name'] == u'bad'):
     myData['myArray'].remove(a)

感谢大家!


推荐阅读