使用Python,我需要删除JSON数组中所有具有'name'键特定值的对象。但是,我不能从循环中这样做。
例如,我想删除以下输入中所有名称为'bad'的项目:
所以我使用以下Python测试案例:
例如,我想删除以下输入中所有名称为'bad'的项目:
{
'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没有报告任何运行时错误或警告。
在这种情况下,推荐采取什么方法呢?
谢谢!
a
上执行了del
操作,而a
是对(隐式)调用迭代器的next
方法所返回结果的变量的赋值。所以你删除了变量,但是在下一次迭代中,该变量会被重新创建。你想要改变你的集合,但你可能不应该在迭代时这样做。 - juanpa.arrivillaga[x for x in myData['myArray'] if x['name'] !='bad']
非常简单易懂。 - juanpa.arrivillaga