दिलचस्प पोस्ट
अजगर-एफ़टीपी निर्देशिका में सभी फाइलों को डाउनलोड करते हैं MySQL में पार्स तिथि ITunesConnect से ऐप कैसे हटाएं जावा एफएक्स – क्या यह वास्तव में एक ब्राउज़र में तैनात किया जा सकता है? मुझे आत्म = क्यों कॉल करनी चाहिए वसंत: मैं एक एचटीपीपीएर्वलेट अनुरोध को एक अनुरोध-स्कॉक्ड बीन में कैसे इंजेक्ट करूँ? रिफ्लेक्शन के साथ राइट जेनेरिक मेथड चुनें ट्विटर बूटस्ट्रैप फॉर्म फ़ाइल एलिमेंट अपलोड बटन एक एसटीए धागा चलने वाले कार्य (टीपीएल) कैसे तैयार करें? क्या यह कभी कभी <BR का उपयोग करने के लिए बुरा है? फ़ॉर्म के बीच डेटा कैसे साझा करें? क्रोम एक्सटेंशन बनाना एक फाइल डाउनलोड करना Mod_rewrite की छिपी हुई विशेषताओं सी / सी ++ में ओपनजीएल शेडर के लिए आसान ढांचा अजगर में कार्य करने के लिए सूची को कैसे विस्तारित करें

पायथन: 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() 

Solutions Collecting From Web of "पायथन: 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 

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