擅长:python、mysql、java
<p>您可以使用<code>enumerate</code>:</p>
<pre><code>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)
</code></pre>
<p>但是,一般来说,这些东西在helper函数和列表理解方面稍微干净一点:</p>
<pre><code>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]
</code></pre>
<p>应该注意的是,第二个解决方案并没有及时更新列表——换句话说,如果您有其他对该列表的引用,它们将不会受到影响。如果需要,可以使用slice赋值很容易地进行替换:</p>
<pre><code>def update_condition(self, type, params):
self.conditions[:] = [helper(c,type,params) for c in self.conditions]
</code></pre>