यह collections.defaultdict
के लिए उपयोग का मामला है, यहां केवल int
डिफ़ॉल्ट फैक्ट्री के लिए कॉल करने योग्य का उपयोग कर रहा है।
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> d
defaultdict(<class 'int'>, {})
>>> d['k'] +=1
>>> d
defaultdict(<class 'int'>, {'k': 1})
एक defaultdict
आइटम बनाने के लिए जब भी एक लापता कुंजी की खोज कर रहा है कॉन्फ़िगर किया गया है। आप इसे एक कॉल करने योग्य (यहां int()
) प्रदान करते हैं, जो कि जब भी __getitem__
के साथ लुकअप मौजूद होता है तो डिफ़ॉल्ट मान उत्पन्न करने के लिए उपयोग किया जाता है जो मौजूद नहीं है। यह कॉल करने योग्य एक उदाहरण विशेषता में संग्रहीत है जिसे default_factory
कहा जाता है।
यदि आप default_factory
प्रदान नहीं करते हैं, तो आपको लापता कुंजी के लिए सामान्य रूप से KeyError
मिल जाएगा।
तो फिर तुम एक अलग डिफ़ॉल्ट मान चाहता था लगता है, शायद 1 0. के बजाय आप बस एक प्रतिदेय जो आपके इच्छित शुरू करने मूल्य प्रदान करता है पारित करने के लिए, बहुत तुच्छता
>>> d = defaultdict(lambda: 1)
यह स्पष्ट रूप से भी कर सकते थे होता इस मामले में किसी भी नियमित नामित समारोह हो।
हालांकि यह ध्यान देने योग्य बात है कि यदि आपके मामले में आप सिर्फ विशेष मूल्यों की गिनती स्टोर करने के लिए एक शब्दकोश का उपयोग करने के प्रयास कर रहे हैं, एक collections.Counter
काम के लिए अधिक उपयुक्त है लायक है।
>>> from collections import Counter
>>> Counter('kangaroo')
Counter({'a': 2, 'o': 2, 'n': 1, 'r': 1, 'k': 1, 'g': 1})