दिलचस्प पोस्ट
मैं Google क्रोम एक्सटेंशन से मौजूदा टैब का यूआरएल कैसे प्राप्त करूं? CS0120: गैर-विशिष्ट क्षेत्र, विधि, या प्रॉपर्टी 'फू' के लिए ऑब्जेक्ट संदर्भ की आवश्यकता है फायरबेज संग्रहण और एक्सेस-कंट्रोल-अनुमति-मूल सी # स्ट्रिंग से वर्ण निकालें SQL सर्वर में पैरामीटर सूँघने (या स्पूफ़िंग) सीएसएस रीसेट – यह वास्तव में क्या करता है? ब्राउज़र की डिफ़ॉल्ट सीएसएस स्टाइलशीट विंडोज फोन 8 एमुलेटर इंटरनेट से कनेक्ट नहीं हो सकता मैं स्थानीय रूप से चलाने वाले वेब पेज पर एक स्थानीय फाइल के लिए एक लिंक कैसे बना सकता हूं? स्थिर कीवर्ड और इसके विभिन्न उपयोग सी ++ में मेरी साइट से (देखें स्रोत) और (Ctrl + C) कैसे अक्षम करें IntentService और एक सेवा के बीच अंतर क्या है? पायथन जेेंजो ग्लोबल वैरिएबल एंड्रॉइड लाइब्रेरी प्रोजेक्ट के लिए जार कैसे बनाएं प्रेषक, से और रिटर्न-पथ के बीच क्या अंतर है?

पायथन: defaultdict का डिफ़ॉल्ट दिशानिर्देश?

क्या निम्न कोड काम करने के लिए एक defaultdict(defaultdict(int)) का कोई तरीका है?

 for x in stuff: d[xa][xb] += x.c_int 

d को xb बनाया जाना चाहिए, xb और xb तत्वों के आधार पर

मैं इस्तेमाल कर सकता हूँ:

 for x in stuff: d[xa,xb] += x.c_int 

लेकिन तब मैं इसका उपयोग करने में सक्षम नहीं होगा:

 d.keys() d[xa].keys() 

वेब के समाधान से एकत्रित समाधान "पायथन: defaultdict का डिफ़ॉल्ट दिशानिर्देश?"

हां मुझे यह पंसद है:

 defaultdict(lambda : defaultdict(int)) 

डिफर्ड डिक्ट कन्स्ट्रक्टर के लिए पैरामीटर एक ऐसा फ़ंक्शन है जिसे नए तत्वों के निर्माण के लिए कहा जाएगा। तो चलो एक लैम्ब्डा का उपयोग करें!

 >>> from collections import defaultdict >>> d = defaultdict(lambda : defaultdict(int)) >>> print d[0] defaultdict(<type 'int'>, {}) >>> print d[0]["x"] 0 

पायथन 2.7 के बाद से, काउंटर का उपयोग करके एक और भी बेहतर उपाय है :

 >>> from collections import Counter >>> c = Counter() >>> c["goodbye"]+=1 >>> c["and thank you"]=42 >>> c["for the fish"]-=5 >>> c Counter({'and thank you': 42, 'goodbye': 1, 'for the fish': -5}) 

कुछ बोनस विशेषताएं

 >>> c.most_common()[:2] [('and thank you', 42), ('goodbye', 1)] 

अधिक जानकारी के लिए PyMOTW देखें – संग्रह – कंटेनर डेटा प्रकार और पायथन दस्तावेज़ीकरण – संग्रह

partial उपयोग करने के लिए मुझे इसे थोड़ा और अधिक सुंदर लगता है:

 import functools dd_int = functools.partial(defaultdict, int) defaultdict(dd_int) 

बेशक, यह एक लैम्ब्डा के समान है

दूसरों ने सही ढंग से आपके प्रश्न का उत्तर दिया है कि काम करने के लिए निम्न कैसे प्राप्त करें:

 for x in stuff: d[xa][xb] += x.c_int 

एक विकल्प चाबी के लिए ट्यूप्ले का उपयोग करना होगा:

 d = defaultdict(int) for x in stuff: d[xa,xb] += x.c_int # ^^^^^^^ tuple key 

इस दृष्टिकोण के बारे में अच्छी बात यह है कि यह सरल है और इसे आसानी से विस्तारित किया जा सकता है। यदि आपको तीन स्तरों के मानचित्रण की आवश्यकता है, तो कुंजी के लिए तीन आइटम ट्यूपल का उपयोग करें।