defaultdict
"मानक डिक्शनरी में वैल्यू को पुनः प्राप्त करने और डिफॉल्ट के मौजूद न होने पर डिफ़ॉल्ट को स्थापित करने के लिए विधि सेटडेफॉल्ट () शामिल है। इसके विपरीत। defaultdict
कॉर्नर को कंटेनर को इनिशियलाइज़ होने पर सामने वाले को डिफॉल्ट (वापस लौटाए जाने वाला) निर्दिष्ट करने देता है।"
उदाहरण के रूप में पायथन स्टैंडर्ड लाइब्रेरी में डौग हेलमैन द्वारा परिभाषित
डिफ़ॉल्ट का उपयोग कैसे करें
डिफ़ॉल्ट रूप से आयात करें
>>> from collections import defaultdict
प्रारंभिक निर्णय
इसे पास करके आरंभ करें
पहला तर्क के रूप में कॉल करने योग्य (अनिवार्य)
>>> d_int = defaultdict(int)
>>> d_list = defaultdict(list)
>>> def foo():
... return 'default value'
...
>>> d_foo = defaultdict(foo)
>>> d_int
defaultdict(<type 'int'>, {})
>>> d_list
defaultdict(<type 'list'>, {})
>>> d_foo
defaultdict(<function foo at 0x7f34a0a69578>, {})
** इसके दूसरे तर्क (वैकल्पिक) के रूप में kwargs
>>> d_int = defaultdict(int, a=10, b=12, c=13)
>>> d_int
defaultdict(<type 'int'>, {'a': 10, 'c': 13, 'b': 12})
या
>>> kwargs = {'a':10,'b':12,'c':13}
>>> d_int = defaultdict(int, **kwargs)
>>> d_int
defaultdict(<type 'int'>, {'a': 10, 'c': 13, 'b': 12})
यह कैसे काम करता है
जैसा कि मानक शब्दकोश का एक बच्चा वर्ग है, यह सभी समान कार्य कर सकता है।
लेकिन अज्ञात कुंजी को पारित करने के मामले में यह त्रुटि के बजाय डिफ़ॉल्ट मान लौटाता है। पूर्व के लिए:
>>> d_int['a']
10
>>> d_int['d']
0
>>> d_int
defaultdict(<type 'int'>, {'a': 10, 'c': 13, 'b': 12, 'd': 0})
यदि आप डिफ़ॉल्ट मान को बदलना चाहते हैं तो default_factory लिखें:
>>> d_int.default_factory = lambda: 1
>>> d_int['e']
1
>>> d_int
defaultdict(<function <lambda> at 0x7f34a0a91578>, {'a': 10, 'c': 13, 'b': 12, 'e': 1, 'd': 0})
या
>>> def foo():
... return 2
>>> d_int.default_factory = foo
>>> d_int['f']
2
>>> d_int
defaultdict(<function foo at 0x7f34a0a0a140>, {'a': 10, 'c': 13, 'b': 12, 'e': 1, 'd': 0, 'f': 2})
प्रश्न में उदाहरण
उदाहरण 1
चूंकि int को default_factory के रूप में पारित किया गया है, कोई भी अज्ञात कुंजी 0 डिफ़ॉल्ट रूप से वापस आ जाएगी।
अब जैसे-जैसे स्ट्रिंग लूप में पास होगी, यह उन अल्फाबेट्स की गिनती को बढ़ाता जाएगा।
>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> d.default_factory
<type 'int'>
>>> for k in s:
... d[k] += 1
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]
>>> d
defaultdict(<type 'int'>, {'i': 4, 'p': 2, 's': 4, 'm': 1})
उदाहरण 2
के रूप में एक सूची को default_factory के रूप में पारित किया गया है, कोई भी अज्ञात (गैर-मौजूद) कुंजी डिफ़ॉल्ट रूप से वापस आ जाएगी [] (यानी। सूची)।
अब जैसे कि टुपल्स की सूची को लूप में पास किया जाता है, यह d [कलर] में वैल्यू को जोड़ देगा।
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> d.default_factory
<type 'list'>
>>> for k, v in s:
... d[k].append(v)
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
>>> d
defaultdict(<type 'list'>, {'blue': [2, 4], 'red': [1], 'yellow': [1, 3]})
default_factory = None
। इस प्रश्न को देखें ।