Dmy*_*tro 5 python json for-loop
使用 Python,我需要删除 JSON 数组中具有特定 'name' 键值的所有对象。但是,我不能从循环中做到这一点。
成像我想删除以下输入中所有名称为“坏”的项目:
{
'myArray' : [
{
'name' : 'good',
'value' : '1'
},
{
'name' : 'bad',
'value' : '2'
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以我使用以下 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))
Run Code Online (Sandbox Code Playgroud)
我看到 myData 没有改变。
我认为这是因为我尝试删除循环的迭代器,这可能被解释器视为有风险的操作,但是 Python 没有报告运行时错误或警告。
在这种情况下推荐的方法是什么?
谢谢!
使用(嵌套)字典/列表理解。迭代对象时切勿尝试删除对象的元素
>>> [x for x in myData['myArray'] if x['name'] != 'bad']
[{'name': 'good', 'value': '1'}]
Run Code Online (Sandbox Code Playgroud)
将结果分配给myData['myArray']或任何您想要的值。
| 归档时间: |
|
| 查看次数: |
7785 次 |
| 最近记录: |