Si potrebbe utilizzare enumerate
:
def update_condition(self, type, params):
for i,condition in enumerate(self.conditions):
condition_loaded = json.loads(condition)
if condition_loaded['type'] == type:
condition_loaded['params'] = params
self.conditions[i] = json.dumps(condition_loaded)
Ma, in generale, queste cose sono un po 'più pulito, con funzioni di supporto e list comprehension:
def helper(condition,type,params)
loaded = json.loads(condition)
if loaded['type'] == type:
loaded['params'] = params
return json.dumps(loaded)
return condition
...
def update_condition(self, type, params):
self.conditions = [helper(c,type,params) for c in self.conditions]
Va notato che questa seconda soluzione non aggiorna mangiato la lista in atto - In altre parole, se hai altri riferimenti a questa lista, non saranno influenzati. Se si desidera, è possibile effettuare la sostituzione in posizione abbastanza facilmente usando assegnamento di una fetta:
def update_condition(self, type, params):
self.conditions[:] = [helper(c,type,params) for c in self.conditions]
+1. Bella chiara spiegazione sia delle alternative mutanti che non mutanti (senza scrivere 3 pagine di testo come di solito finisco per fare in questi casi). – abarnert
@abarnert - Grazie per il feedback. È sempre bello quando qualcuno che scrive costantemente buone risposte lascia una bella nota :) – mgilson