आप इस्तेमाल कर सकते हैं 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)
लेकिन सामान्य रूप में, इन बातों को सहायक कार्य करता है और सूची comprehensions साथ एक छोटी सी क्लीनर हैं:
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]
यह ध्यान दिया जाना चाहिए कि यह दूसरा समाधान अद्यतन नहीं है सूची में खाया - दूसरे शब्दों में, यदि आपके पास इस सूची के अन्य संदर्भ हैं, तो वे प्रभावित नहीं होंगे। यदि आप चाहते हैं, तो आप बहुत आसानी से टुकड़ा काम का उपयोग कर जगह में प्रतिस्थापन कर सकते हैं:
def update_condition(self, type, params):
self.conditions[:] = [helper(c,type,params) for c in self.conditions]
+1। उत्परिवर्तनीय और गैर-उत्परिवर्ती विकल्पों दोनों के बारे में अच्छी स्पष्ट व्याख्या (पाठ के 3 पृष्ठ लिखने के बिना, जैसे कि मैं आमतौर पर इन मामलों में कर रहा हूं)। – abarnert
@abarnert - प्रतिक्रिया के लिए धन्यवाद। यह हमेशा अच्छा होता है जब कोई लगातार अच्छे उत्तर लिखता है तो वह एक अच्छा नोट छोड़ देता है :) – mgilson