优化双枚举循环

时间:2013-10-31 01:31:13

标签: 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,
                      "displayed" : True},
                      { //more details,
                      "displayed" : False}
                   ]
       },
       { //...
       }]

data是一个列表。数据中的每个对象都有一个'events'数组。在那些对象中,我想删除那些有display == false

的对象

1 个答案:

答案 0 :(得分:2)

不要枚举,也不要删除(尤其是,如果你正在迭代你要删除的序列)。切片 - 改为分配列表理解。

for v in data.itervalues():
  v['events'][:] = [e for e in v['events'] if e['displayed']]
相关问题