Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 优化双枚举循环_Python_Itertools - Fatal编程技术网

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'
。还有一个问题,为什么切片分配更为优化?它的处理速度更快吗?@dioor
itervalues()
是python2语法;它只是python3中的
values()
。@dioor:你确定你问题中的结构是准确的吗?您可以进行切片赋值,因为这样您就不必关心原始值的位置是什么。@或者如果
data
是一个列表,那么只需对数据中的v执行
无需使用
itervalues
。你在问题中的写作方式看起来像是一本字典。谢谢你们。为了正确起见,我更新了结构。