można użyć 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)
Ale w ogóle, te rzeczy są trochę czystsze z funkcjami pomocniczymi i listowych:
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]
Należy zauważyć, że to drugie rozwiązanie nie powoduje aktualizacji zjadł listę w miejscu - Innymi słowy, jeśli masz inne odniesienia do tej listy, nie będą one wpływać. Jeśli chcesz, możesz dokonać zmiany w miejscu dość łatwo za pomocą przypisania plasterek:
def update_condition(self, type, params):
self.conditions[:] = [helper(c,type,params) for c in self.conditions]
+1. Ładne jasne wyjaśnienie zarówno mutujących, jak i niemutujących alternatyw (bez pisania 3 stron tekstu, jak zwykle robię w takich przypadkach). – abarnert
@abarnert - Dzięki za opinię. Zawsze jest miło, gdy ktoś, kto konsekwentnie pisze dobre odpowiedzi, pozostawia miłą nutkę :) – mgilson