2016-03-23 15 views

risposta

1

È possibile utilizzare una comprensione elenco o generatore di espressione per filtrare:

for key,value in (i for i in columns.items() if not i==('key_x',value_x)): 
    do something 
9

Utilizzare semplicemente l'istruzione continue per passare alla successiva iterazione del ciclo for:

for key,value in columns.items(): 
    if key == 'key_x': 
     continue 
    # do something 
0

È anche possibile scorrere attraverso l'uscita di filter metodo incorporato (che produce un generatore in python3 +), in questo modo :

>>> for x in filter('key_x'.__ne__, d_data): 
     print(x, d_data[x]) 


key_3 value_3 
key_n value_n 
key_1 value_1 
key_2 value_2 
+0

E qual è il commento Mr Downvoter? –

+1

Sì, quello ero io. 'filter' +' lambda' è unpythonic, lento, ed è stato [esplicitamente scoraggiato da Guido] (http://legacy.python.org/doc/essays/ppt/regrets/PythonRegrets.ppt). 'filter ('key_x' .__ ne__, d_data)' è un'alternativa equivalente, o meglio ancora usa solo le comprensioni. – wim

+0

@wim ... sì ... Ho appena saputo in questi giorni che loro idea di combinare 'filter',' map' o qualcosa di simile con 'lambda' colpisce le prestazioni in basso ... grazie per il suggerimento e il codice aggiornato come bene, ora la mia domanda è, quali sono i posti appropriati per usare '__ne__' o metodi simili? –

Problemi correlati