Şunları kullanabilirsiniz 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)
Fakat, genel olarak, bu şeylerin yardımcı işlevlerini ve liste comprehensions ile küçük süpürge şunlardır:
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]
Bu ikinci çözümün yukarı çıkmadığı unutulmamalıdır. Listeyi yerinde yediniz - Diğer bir deyişle, bu listeye başka referanslar varsa, bunlar etkilenmeyecektir. Eğer isterseniz, dilim ataması kullanarak oldukça kolay yerinde değişiklik yapabilirsiniz:
def update_condition(self, type, params):
self.conditions[:] = [helper(c,type,params) for c in self.conditions]
+1. Hem mutasyona uğramış hem de mutasyona uğramayan alternatiflerin açık bir şekilde açıklanması (genellikle bu durumlarda yaptığım gibi 3 sayfa metin yazmadan). – abarnert
@abarnert - Geri bildirim için teşekkürler. Sürekli olarak iyi cevaplar yazan biri güzel bir not bıraktığında her zaman güzeldir :) – mgilson