Python,从循环中删除具有特定键的JSON元素

标签 python json for-loop

使用 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/

相关文章:

javascript - 将 HTML 从 servlet 发送到 js 应用程序会损坏 Firefox 中的数据

python - 检查元素是否是邻居,然后创建一个新列

c# - 消除边界检查的 foreach 循环有什么特殊情况?

python - PRAW/Tweepy 过滤关键字

python - 使用 python 查找频繁的字符串模式

java - 跨平台转换为 json 字符串时相同的 JSON 字符串

python - 在 for 循环 django 模板中添加列表限制

python - 连接存储在 numpy 数组中的两个数据表的有效方法是什么?

python - 从任何(不安全)字符串创建(正常/安全)应用程序包标识符

C# 从 Cookie 读取无效的 JSON 基元