python - 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 没有报告运行时错误或警告。
在这种情况下推荐的方法是什么?
谢谢!
解决方案
在 python 中使用 enumerate() 时从列表中删除元素的一种方法- 在称为 [:] 的列表副本上循环 - 也可以:
for a in myData['myArray'][:]:
if (a['name'] == u'bad'):
myData['myArray'].remove(a)
感谢大家!
推荐阅读
- java - 如何从java资源文件夹中的文件夹中获取所有文件的列表
- javascript - 从对象数组中过滤
- terraform - 在 Azure Windows VM 上启用 Terraform-PSRemoting
- javascript - 如何使用javascript检查事件侦听器是否已添加到窗口?
- c# - Newtonsoft.Json 可在 Unity 编辑器中使用,但不适用于移动设备
- pandas - 当我输出到excel时排序不起作用
- c# - 如果我传递空字符串,带有包含的 LINQ 将返回零行
- javascript - Ionic 3 ~ DOM 节点内存泄漏
- python - 使用 Python 3.7 导入制表时遇到问题
- regex - 在 bash 变量中用下划线“_”替换换行符