2013-01-19 15 views
11

मैं प्रत्येक कुंजी के लिए एक स्ट्रिंग के साथ एक शब्दकोश बनाने और प्रत्येक मान के लिए लैम्ब्डा फ़ंक्शन बनाने का प्रयास कर रहा हूं। मुझे यकीन नहीं है कि मैं कहां गलत हो रहा हूं लेकिन मुझे संदेह है कि यह या तो पहली बार एक शब्दकोश में लैम्ब्डा स्टोर करने का मेरा प्रयास है, या तथ्य यह है कि मेरा लैम्ब्डा शॉर्टकट ऑपरेटर का उपयोग कर रहा है।एक शब्दकोश में lambdas को संग्रहीत करना

कोड:

dict = { 
    'Applied_poison_rating_bonus': 
     (lambda target, magnitude: target.equipmentPoisonRatingBonus += magnitude) 
} 

त्रुटि उठाया जा रहा SyntaxError: invalid syntax है और मेरी += पर सही ओर इशारा करते हुए। क्या शॉर्टकट ऑपरेटर को लैम्ब्डा में अनुमति नहीं है, या क्या मैंने सोचा था कि मैंने ट्रैक से भी दूर दूर किया है?

विवेक के लिए, मैं बहुत समान जोड़े के सैकड़ों छोड़ दी हैं (यह सिर्फ एक छोटा शब्दकोश नहीं है।)

संपादित करें:

ऐसा लगता है मेरी समस्या कुछ भी असाइन करने की कोशिश के साथ था एक लैम्ब्डा अभिव्यक्ति के भीतर। हाउवर, हल करने के लिए मेरी समस्या इस प्रकार है कि मैं एक विधि कैसे प्राप्त कर सकता हूं जो केवल इस शब्दकोष की कुंजी को मेरे (टूटे हुए) कोड में परिभाषित फ़ील्ड को बदलने में सक्षम हो?

किसी भी तरह की कॉल eval() मदद करने के लिए?

EDIT_FINAL:

functools.partial() विधि प्रश्न के इस विस्तारित हिस्से के लिए सिफारिश की गई थी, और मेरा मानना ​​है कि यह शोध करने के बाद, मैं इसे अपने समस्या को हल करने के लिए पर्याप्त हैं।

उत्तर

24

आप अभिव्यक्ति में असाइनमेंट का उपयोग नहीं कर सकते हैं, और lambda केवल एक अभिव्यक्ति लेता है।

तुम बस ठीक अन्यथा शब्दकोशों में lambdas स्टोर कर सकते हैं:

dict = {'Applied_poison_rating_bonus' : (lambda target, magnitude: target.equipmentPoisonRatingBonus + magnitude)} 

निश्चित रूप से ऊपर lambda केवल परिणाम देता है, उस में जगह target.equimentPoisonRatingBonus परिवर्तन नहीं करेगा।

+0

दिलचस्प है, लेकिन अब जो भी मेरे लैम्ब्डा को बुला रहा है उसे उस विशेष क्षेत्र में परिणाम जोड़ने के लिए पता होना चाहिए। उसके चारों ओर किसी भी तरह से? – BlackVegetable

+1

@ ब्लैकवेजटेबल: इसके बजाय एक उचित फ़ंक्शन का उपयोग करें, या 'लक्ष्य' कक्षा में कोई विधि जोड़ें। –

+0

मेरे पास इस शब्दकोश में लगभग 150 (इन) तत्व हैं। इस प्रकार, प्रत्येक शब्दकोश के लिए एक उचित समारोह का उपयोग इस शब्दकोश का उद्देश्य है। हम्म ... – BlackVegetable

संबंधित मुद्दे