我想优化此代码:
for MajorKey,v in enumerate(data):
for MinorKey,e in enumerate(v['events']):
if e['displayed'] == False:
del data[MajorKey]['events'][MinorKey]
结构:
data : [{ //details,
"events" :[ { //more details,
"displayed" : True},
{ //more details,
"displayed" : False}
]
},
{ //...
}]
data
是一个列表。数据中的每个对象都有一个'events'数组。在那些对象中,我想删除那些有display == false
。
答案 0 :(得分:2)
不要枚举,也不要删除(尤其是,如果你正在迭代你要删除的序列)。切片 - 改为分配列表理解。
for v in data.itervalues():
v['events'][:] = [e for e in v['events'] if e['displayed']]