मैं अलग-अलग फ़ाइलों में डेटा विभाजित करने के लिए खुली फ़ाइलों का एक शब्दकोश रखने की कोशिश कर रहा हूं। जब मैं शब्दकोश से फ़ाइल का अनुरोध करता हूं तो मैं इसे खोला जाना चाहूंगा यदि कुंजी वहां नहीं है। हालांकि, ऐसा नहीं लगता है कि मैं एक लैम्ब्डा को डिफ़ॉल्ट के रूप में उपयोग कर सकता हूं।क्या लैम्बडा को डिक्शनरी डिफ़ॉल्ट के रूप में उपयोग करना संभव है?
उदा।
files = {}
for row in data:
f = files.get(row.field1, lambda: open(row.field1, 'w'))
f.write('stuff...')
यह काम नहीं करता है क्योंकि एफ इसके परिणाम के बजाय फ़ंक्शन पर सेट है। उपरोक्त वाक्यविन्यास का उपयोग करके setdefault या तो काम नहीं करता है।
f = files.get(row.field1)
if not f:
f = files[row.field1] = open(row.field1, 'w')
प्राप्त() बढ़ा नहीं है आइटम नहीं मिला है तो एक महत्वपूर्ण त्रुटि। [] नोटेशन करता है। जैसे फ़ाइलें [कुंजी] – Jacob