0

我想优化这段代码:

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是一个列表。数据中的每个对象都有一个“事件”数组。在这些对象中,我想删除那些具有display == false.

4

1 回答 1

2

不要枚举,也不要删除(特别是如果您正在迭代要删除的序列)。改为切片分配列表推导。

for v in data.itervalues():
  v['events'][:] = [e for e in v['events'] if e['displayed']]
于 2013-10-31T01:34:15.557 回答