Python 优化双枚举循环
我想优化此代码:Python 优化双枚举循环,python,itertools,Python,Itertools,我想优化此代码: 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,
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}
]
},
{ //...
}]
数据
是一个列表。数据中的每个对象都有一个“事件”数组。在我想要删除的那些对象中,那些具有display==false
的对象不枚举,也不删除(特别是当您对要删除的序列进行迭代时)。请指定一个列表
for v in data.itervalues():
v['events'][:] = [e for e in v['events'] if e['displayed']]
非常感谢。使用
.itervalues()
但是我得到:'list'对象没有属性'itervalues'
。还有一个问题,为什么切片分配更为优化?它的处理速度更快吗?@diooritervalues()
是python2语法;它只是python3中的values()
。@dioor:你确定你问题中的结构是准确的吗?您可以进行切片赋值,因为这样您就不必关心原始值的位置是什么。@或者如果data
是一个列表,那么只需对数据中的v执行:
无需使用itervalues
。你在问题中的写作方式看起来像是一本字典。谢谢你们。为了正确起见,我更新了结构。