あなたが使用することができますが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)
しかし、一般的には、これらのものは、ヘルパー関数とリスト内包と少しクリーナーです:
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]
この2番目の解決策では、他の言葉で言えば、このリストに他の言及がある場合、それらは影響を受けません。あなたがしたい場合は、スライスの割り当てを使用してかなり簡単な場所で置換を行うことができます。
def update_condition(self, type, params):
self.conditions[:] = [helper(c,type,params) for c in self.conditions]
+1。突然変異型と非突然変異型のどちらの選択肢もきれいに説明できます(これらのケースでは通常3ページのテキストを書きません)。 – abarnert
@abarnert - フィードバックいただきありがとうございます。一貫して良い答えを書いている人が素敵なメモを残すときはいつもいいです:) – mgilson