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リストです。データ内の各オブジェクトには、'events' 配列があります。それらのオブジェクトのうち、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 に答える