payment by upi: sinhamit@icici or payment by bank account name: amit kumar sinha, account number: 2646728782 IFSC code: KKBK0005660 SWIFT: KKBKINBB

Please support if you like my work by payment through upi: sinhamit@icici or payment by bank

account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB


Dictionary Manipulation   in Category: पाइथन   by amit

🕙 Posted on 2023-08-20 at 08:04:40


डिक्शनरियों के बारे में अधिक

    पिछले पृष्ठों में आपने कुछ सरल डिक्शनरियों के उदाहरण देखे हैं। डिक्शनरी अन्य प्रोग्रामिंग भाषाओं, जैसे PHP और जावास्क्रिप्ट में साहचर्य (associ­ative) सरणी (arrays) की तरह हैं। एक डिक्शनरी में केवल वे आइटम/तत्व शामिल हो सकते हैं, जिनके कुंजियाँ (keys) अद्वितीय (unique) हैं। अर्थात्, स्ट्रिंग, सूचियों (lists) और टुपल्स के विपरीत, डिक्शनरी वस्तुओं का अव्यवस्थित (unordered) संग्रह हैं, और सूचकांक (index) संख्या के माध्यम से किसी भी आइटम तक पहुंचने या संशोधित करने की गारंटी नहीं है। उन वस्तुओं को केवल उनकी संबंधित कुंजियों के माध्यम से ही एक्सेस किया (पहुंचा) जा सकता है, और संशोधित भी किया जा सकता है, क्योंकि डिक्शनरी परिवर्तन­शील (mutable) वस्तुएँ (objects) हैं।

    कुंजी नाम अपरिवर्तनीय (immutable) डेटा-प्रकार होने चाहिए, यानी पूर्णांक (integer), फ्लोट, बूलियन, स्ट्रिंग, टुपल या None डेटा-प्रकार, (जो hashable भी होना चाहिए)। इस प्रकार, एक कुंजी नाम 0 (शून्य), 1 (एक), आदि हो सकता है, लेकिन वे कुंजी नाम सूचकांक संख्या नहीं हैं। डिक्शनरी में एक आइटम/तत्व हमेशा कुंजी:मूल्य युग्म में मौजूद रहता है। कुंजी और उससे संबंधित मान, दोनों को : (कोलन) चिह्न द्वारा अलग किया जाता है। और, आइटमों को , (अल्पविराम) चिह्न द्वारा अलग किया जाता है। dict() अंतर्निहित फ़ंक्शन या {}(घुंघराले ब्रेसिज़ की एक जोड़ी) का उपयोग करके एक खाली (empty) डिक्शनरी बनाया जा सकता है। हालाँकि, घुंघराले ब्रेसिज़ की एक जोड़ी में कुंजी के बिना आइटम सेट डेटा-प्रकार शाब्दिक हैं।

my_dict = { (1, 'a', None, True): 'one' }
print( my_dict, type( my_dict ) )   # आउटपुट निम्न प्रकार हैं:

{(1, 'a', None, True): 'one'} <class 'dict'>

my_dict = { False: 'zero' }
print( my_dict, type( my_dict ) )   # आउटपुट निम्न प्रकार हैं:

{False: 'zero'} <class 'dict'>

my_dict = { None: 'zero' }
print( my_dict, type( my_dict ) )   # आउटपुट निम्न प्रकार हैं:

{None: 'zero'} <class 'dict'>

my_dict = { [1,2,3,4]: 'one' }
print( my_dict, type( my_dict ) )   # निम्नानुसार त्रुटि आउटपुट करता है:

Traceback (most recent call last):
  File "C:\xampp\htdocs\python2023\new.py", line 1, in <module>
    my_dict = { [1,2,3,4]: 'one' }
                    ^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'list'

my_dict = { {1:'a',2:'b',3:'c'}: 'one' }
print( my_dict, type( my_dict ) )   # निम्नानुसार त्रुटि आउटपुट करता है:

Traceback (most recent call last):
  File "C:\xampp\htdocs\python2023\new.py", line 1, in <module>
    my_dict = { {1:'a',2:'b',3:'c'}: 'one' }
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'dict'

my_dict = { (1, ['a'], {}, set()): 'one' }
print( my_dict, type( my_dict ) )   # निम्नानुसार त्रुटि आउटपुट करता है:

Traceback (most recent call last):
  File "C:\xampp\htdocs\python2023\new.py", line 1, in <module>
    my_dict = { (1, ['a'], {}, set()): 'one' }
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'list'

    उपरोक्त उदाहरण में, आप देख सकते हैं कि डिक्शनरी शाब्दिक की टुपल कुंजी में जब कोई भी आइटम/तत्व सूची/डिक्शनरी/सेट (set) है (अर्थात, hashable नहीं है), तो वही त्रुटि (TypeError) आउटपुट में प्रदर्शित होता है। इस प्रकार, टपल कुंजी में प्रत्येक आइटम भी अपरिवर्तनीय (immutable) डेटा-प्रकार का होना चाहिए। जब आप उपरोक्त उदाहरण में अन्य सभी आइटम हटा देते हैं, अर्थात ['a'], {}, set(), तो (1,) कुंजी (यह टुपल है जब अल्पविराम मौजूद है, अन्यथा यह int डेटा-प्रकार है) कोई त्रुटि नहीं देगा।

    आप विभिन्न विधियों की तुलना वाले पृष्ठ पर देख सकते हैं, कि __hash__() विधि हर डेटा-प्रकार के लिए उपलब्ध है, हालाँकि, जब आप इसे help() अंतर्निहित फ़ंक्शन के साथ जांचते हैं, तो आप (सहायता दस्तावेज के नीचे) पाएंगे कि सूची (list), dict (डिक्शनरी), set और bytearray डेटा-प्रकारों में __hash__ = None निर्दिष्ट है। अन्य डेटा-प्रकारों जैसे bool, None, int, float, complex, स्ट्रिंग, टपल, bytes, memoryview के लिए, __hash__() विधि hash() अंतर्निहित फ़ंक्शन के बराबर है। विभिन्न मॉड्यूल के माध्यम से पायथन में अन्य (कस्टम) डेटा-प्रकार उपलब्ध हैं। यहां तक ​​कि आप कस्टम मॉड्यूल, क्लासेज, फ़ंक्शन, विधियां और कस्टम डेटा-प्रकार भी बना सकते हैं। आपको निम्नलिखित उदाहरणों द्वारा जांचना चाहिए कि कोई डेटा-प्रकार hashable है या नहीं:

print( help( list.__hash__ ) )

print( help( dict.__hash__ ) )

print( help( set.__hash__ ) )

print( help( bytearray.__hash__ ) )

    उपरोक्त कोड के लिए, आउटपुट वैसा ही होगा जैसा कि print( help( None ) ) के बराबर है, क्योंकि सूची, डिक्शनरी, सेट, बाइटएरे (डेटा-प्रकार) के लिए __hash__ None है। हालाँकि, निम्नलिखित कोड का आउटपुट Return hash(self) दिखाते हैं, और वे इनके लिए समान होगा।

print( help( bool.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( int.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( float.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( complex.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( str.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( tuple.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( bytes.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( memoryview.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

print( help( None.__hash__ ) )   # आउटपुट निम्न प्रकार हैं:

Help on wrapper_descriptor:

__hash__(self, /)
    Return hash(self).

None

किसी आइटम को जोड़ना, संशोधित करना और हटाना

    डिक्शनरी शाब्दिक में एक आइटम/तत्व को = (असाइनमेंट) ऑपरेटर का उपयोग करके जोड़ा, संशोधित या हटाया जा सकता है। यह प्रक्रिया सूची शाब्दिक में किसी भी आइटम को संशोधित/हटाने के समान है, सिवाय इसके कि चर नाम या डिक्शनरी शाब्दिक के ठीक बाद वर्गाकार कोष्ठकों की एक जोड़ी के अंदर सूचकांक संख्या के बजाय कुंजी नामों का उपयोग किया जाता है। सूची के विपरीत, डिक्शनरी शाब्दिक में एक आइटम को असाइनमेंट ऑपरेटर के साथ जोड़ा जा सकता है, क्योंकि डिक्शनरी कुंजी-आधारित अनुक्रम डेटा-प्रकार है।

my_dict = {}
my_dict['a'] = [12, 14, 16, 18]
print( my_dict )   # आउटपुट {'a': [12, 14, 16, 18]} है।

# उपरोक्त उदाहरण के साथ जारी रखें:

my_dict[None] = object()
print( my_dict )   # आउटपुट {'a': [12, 14, 16, 18], None: <object object at 0x000002B098534270>} है।

    डिक्शनरी शाब्दिक में किसी आइटम का मूल्य पायथन के किसी भी मान्य डेटा-प्रकार का हो सकता है, लेकिन आपको सावधानीपूर्वक कुंजियों का नाम देना चाहिए। डिक्शनरी में किसी आइटम को नीचे दिखाए अनुसार संशोधित किया जा सकता है:

my_dict[None] = True
print( my_dict )   # आउटपुट {'a': [12, 14, 16, 18], None: True} है।

del my_dict[None]
print( my_dict )   # आउटपुट {'a': [12, 14, 16, 18]} है।

del my_dict
print( my_dict )   # आउटपुट त्रुटि (जैसा कि नीचे दिखाया गया) है, क्योंकि संपूर्ण डिक्शनरी शाब्दिक को हटा दिया गया है

Traceback (most recent call last):
  File "C:\xampp\htdocs\python2023\new.py", line 12, in <module>
    print( my_dict )
            ^^^^^^^
NameError: name 'my_dict' is not defined

print( help( dict ) )   # आउटपुट जैसा कि नीचे दिखाया गया है:

Help on class dict in module builtins:

class dict(object)
|   dict() -> new empty dictionary
|   dict(mapping) -> new dictionary initialized from a mapping object's
|   (key, value) pairs
|   dict(iterable) -> new dictionary initialized as if via:
|       d = {}
|       for k, v in iterable:
|           d[k] = v
|   dict(**kwargs) -> new dictionary initialized with the name=value pairs
|       in the keyword argument list. For example: dict(one=1, two=2)
|
|   Methods defined here:
|
|   __contains__(self, key, /)
|       True if the dictionary has the specified key, else False.
|
|   __delitem__(self, key, /)
|       Delete self[key].
|
|   __eq__(self, value, /)
|       Return self==value.
|
|   __ge__(self, value, /)
|       Return self>=value.
|
|   __getattribute__(self, name, /)
|       Return getattr(self, name).
|
|   __getitem__(...)
|       x.__getitem__(y) <==> x[y]
|
|   __gt__(self, value, /)
|       Return self>value.
|
|   __init__(self, /, *args, **kwargs)
|       Initialize self. See help(type(self)) for accurate signature.
|
|   __ior__(self, value, /)
|       Return self|=value.
|
|   __iter__(self, /)
|       Implement iter(self).
|
|   __le__(self, value, /)
|       Return self<=value.
|
|   __len__(self, /)
|       Return len(self).
|
|   __lt__(self, value, /)
|       Return self<value.
|
|   __ne__(self, value, /)
|       Return self!=value.
|
|   __or__(self, value, /)
|       Return self|value.
|
|   __repr__(self, /)
|       Return repr(self).
|
|   __reversed__(self, /)
|       Return a reverse iterator over the dict keys.
|
|   __ror__(self, value, /)
|       Return value|self.
|
|   __setitem__(self, key, value, /)
|       Set self[key] to value.
|
|   __sizeof__(...)
|       D.__sizeof__() -> size of D in memory, in bytes
|
|   clear(...)
|       D.clear() -> None. Remove all items from D.
|
|   copy(...)
|       D.copy() -> a shallow copy of D
|
|   get(self, key, default=None, /)
|       Return the value for key if key is in the dictionary, else default.
|
|   items(...)
|       D.items() -> a set-like object providing a view on D's items
|
|   keys(...)
|       D.keys() -> a set-like object providing a view on D's keys
|
|   pop(...)
|       D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
|
|       If the key is not found, return the default if given; otherwise,
|       raise a KeyError.
|
|   popitem(self, /)
|       Remove and return a (key, value) pair as a 2-tuple.
|
|       Pairs are returned in LIFO (last-in, first-out) order.
|       Raises KeyError if the dict is empty.
|
|   setdefault(self, key, default=None, /)
|       Insert key with a value of default if key is not in the dictionary.
|
|       Return the value for key if key is in the dictionary, else default.
|
|   update(...)
|       D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
|       If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
|       If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
|       In either case, this is followed by: for k in F: D[k] = F[k]
|
|   values(...)
|       D.values() -> an object providing a view on D's values
|
|   ----------------------------------------------------------------------
|   Class methods defined here:
|
|   __class_getitem__(...) from builtins.type
|       See PEP 585
|
|   fromkeys(iterable, value=None, /) from builtins.type
|       Create a new dictionary with keys from iterable and values set to value.
|
|   ----------------------------------------------------------------------
|   Static methods defined here:
|
|   __new__(*args, **kwargs) from builtins.type
|       Create and return a new object. See help(type) for accurate signature.
|
|   ----------------------------------------------------------------------
|   Data and other attributes defined here:
|
|   __hash__ = None

None


Leave a Comment: