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 Methods   in Category: पाइथन   by amit

🕙 Posted on 2023-08-23 at 00:08:04


डिक्शनरी विधियाँ

    आप पिछले पृष्ठ में पहले ही देख चुके हैं कि किसी डिक्शनरी में किसी आइटम/तत्व को उसके संबंधित कुंजी नाम के माध्यम से कैसे पहुँचा (access) जा सकता है। डिक्शनरी शाब्दिक (literal) में एक कुंजी नाम '' (एक खाली स्ट्रिंग - बिना किसी रिक्त स्थान के एकल/दोहरे उद्धरण चिह्नों की एक जोड़ी) या ' ' (रिक्त स्थान के साथ एकल/दोहरे उद्धरण चिह्नों की एक जोड़ी) या अन्य स्ट्रिंग शाब्दिक हो सकता है। एक कुंजी नाम None, True या False, या कोई संख्यात्मक (पूर्णांक/फ्लोट) मान, या टपल शाब्दिक (जिसमें केवल अपरिवर्तनीय आइटम्स हो,) हो सकता है। हालाँकि, आपको डिक्शनरी शाब्दिक में किसी भी कुंजी का अर्थपूर्ण नाम लिखना चाहिए, ताकि प्रोग्राम (कोड) अर्थहीन न लगें, और बाद में आपको उन कुंजियों के माध्यम से विभिन्न वस्तुओं तक पहुँचने में कठिनाई न हो!

उदाहरण 1

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}
print( my_dict[''] )   # आउटपुट abc है। − कुंजी नाम के माध्यम से आइटम तक पहुंचना।
print( my_dict['key'] )   # आउटपुट ['def', 'ghi'] है।

print( my_dict['one'] )   # आउटपुट KeyError: 'one' है।
print( my_dict[0] )   # आउटपुट KeyError: 0 है। (इस पंक्ति का परिणाम देखने के लिए उपरोक्त कथन पर टिप्पणी करें।)

print( my_dict['key'][1] )   # आउटपुट ghi है। (इस पंक्ति का परिणाम देखने के लिए उपरोक्त दो कथनों पर टिप्पणी करें।)
print( my_dict['key'][2] )   # आउटपुट IndexError: list index out of range है।

get(self, key, default=None, /)

    जब कोई कुंजी किसी डिक्शनरी शाब्दिक में मौजूद नहीं होता है, तो उस डिक्शनरी से किसी आइटम/तत्व तक पहुंचने का उपरोक्त तरीके से KeyError दिखाया जाएगा। इसलिए, get() डिक्शनरी विधि का उपयोग करना सुरक्षित है जो उस कुंजी (उदाहरण के लिए, उपरोक्त कोड में, 'one' या 0) के नहीं मिलने पर None वापस करता है। उपरोक्त उदाहरण में my_dict (चर नाम, एक डिक्शनरी शाब्दिक के साथ निर्दिष्ट) का तीसरा आइटम एक नेस्टेड सूची (list) है। इसलिए, (उपरोक्त उदाहरण की पंक्तियाँ 8 और 9 में) में वर्गाकार कोष्ठकों की पहली जोड़ी कुंजी नाम है, और (उन पंक्तियों में) में वर्गाकार कोष्ठकों की दूसरी जोड़ी सूचकांक (index) संख्या है।

उदाहरण 1 जारी...

print( my_dict.get('one', 'Not Found') )   # आउटपुट Not Found ('Not Found' एक स्ट्रिंग डेटा-प्रकार है। उपरोक्त उदाहरण में इस पंक्ति का परिणाम देखने के लिए, उन कथनों पर टिप्पणी करें, जो त्रुटियाँ दिखाते हैं।)

print( my_dict.get('key', False)[0] )   # आउटपुट def है, क्योंकि my_dict डिक्शनरी शाब्दिक से मूल आइटम को नेस्टेड सूची के रूप में लौटाया गया है। आप दूसरे तर्क के रूप में, अपनी पसंद के अनुसार False (बूलियन शाब्दिक) या 0 (शून्य, पूर्णांक शाब्दिक) भी उपयोग कर सकते हैं।

    get() विधि से लौटाया गया आइटम/तत्व बहुत महत्वपूर्ण है। अर्थात्, यदि लौटाया गया आइटम पूर्णांक, फ़्लोट या बूलियन मान है, तो उसे () कोष्ठक के बाद (जैसा कि ऊपर वर्णित है) [0] रखने पर त्रुटि दिखाएगा, क्योंकि ये गैर-अनुक्रम (non-sequence) डेटा-प्रकार हैं। इसी प्रकार, यदि लौटाया गया आइटम एक नेस्टेड डिक्शनरी है, तो आपको आगे की वस्तुओं को निकालने के लिए get() विधि के बाद वर्गाकार कोष्ठकों की जोड़ी में कुंजी नाम प्रदान करना होगा।

    आप एक चर नाम के लिए my_dict.get(None) अभिव्यक्ति (expression) भी निर्दिष्ट कर सकते हैं (यहां, None कुंजी नाम - पहला तर्क है,) और फिर लौटाए गए डेटा का उपयोग करें। दूसरा तर्क वैकल्पिक है और इसका डिफ़ॉल्ट मान None (कुंजी नाम से भिन्न) है। चूंकि संबंधित कुंजी None का मान 22 है, इसलिए my_dict.get(None) अभिव्यक्ति से लौटाया गया मान 22 है।

    दूसरे तर्क का मान तभी लौटाया जाएगा जब पहला तर्क मूल डिक्शनरी में मौजूद न हो। आपको दूसरे तर्क से बचना (avoid) नहीं चाहिए, और इसे पहले तर्क से अलग करने (distinguish) के लिए कुछ वर्णनात्मक (descriptive) शाब्दिक (बूलियन/int/स्ट्रिंग) रखना चाहिए। कुछ मामलों में get() विधि से दूसरे तर्क के रूप में, लौटाया गया (रिटर्निंग) False या 0 बहुत उपयोगी होता है।

update()

    update() विधि हमेशा तर्क के रूप में, एक डिक्शनरी डेटा-प्रकार शाब्दिक लेता है। आप व्यक्तिगत रूप से कुछ आइटम जोड़/संशोधित कर सकते हैं जैसा कि नीचे दिए गए उदाहरण 2 में दिखाया गया है, लेकिन update() विधि के साथ, आप मूल डिक्शनरी शाब्दिक या चर नाम में आसानी से कई आइटम जोड़/संशोधित कर सकते हैं। जब कोई कुंजी मूल डिक्शनरी में मौजूद नहीं होती है, तो उस आइटम को अन्य सभी आइटमों के बाद, उस नाम के साथ एक नई कुंजी में जोड़ा जाता है (उदाहरण 3 देखें)।

उदाहरण 2

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}
my_dict[''] = 'xyz'
my_dict[None] = 3.14
print( my_dict )   # आउटपुट {'': 'xyz', None: 3.14, 'key': ['def', 'ghi']} है।

उदाहरण 3

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}
my_dict.update({'': 'xyz', None: 3.14, 0: True})
print( my_dict )   # आउटपुट {'': 'xyz', None: 3.14, 'key': ['def', 'ghi'], 0: True} है।


pop(), popitem()

    हेल्प डॉक्यूमेंटेशन में, D.pop(k[,d]) का मतलब है Dictionary_literal.pop( key[, default] ) − यानी, कोष्ठक के अंदर निर्दिष्ट कुंजी नाम हटा दिया जाएगा, और उस कुंजी नाम का संबंधित मान एक चर नाम पर वापस कर दिया जाएगा। इस ऑपरेशन के बाद मूल डिक्शनरी शाब्दिक को संशोधित किया जाएगा। जब निर्दिष्ट कुंजी शाब्दिक डिक्शनरी में नहीं मिलती है, तो दूसरा तर्क (डिफ़ॉल्ट मान) यदि उल्लेख किया गया है, तो वापस कर दिया जाएगा। जब pop() विधि में दूसरा तर्क निर्दिष्ट नहीं है, तब कमांड लाइन कंसोल या VSCode एडिटर टर्मिनल में KeyError (कुंजीत्रुटि) दिखाया जाएगा।

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}

my_item = my_dict.pop('key')
print( my_dict, type( my_dict ) )
print( my_item, type( my_item ) )

new_item = my_dict.pop('abc', 'Not Found')
print( my_dict, type( my_dict ) )
print( new_item, type( new_item ) )

{'': 'abc', None: 22} <class 'dict'>
['def', 'ghi'] <class 'list'>
{'': 'abc', None: 22} <class 'dict'>
Not Found <class 'str'>

    popitem() विधि कोई तर्क नहीं लेता है, और अंतिम आइटम को हटा देता है और इसे (कुंजी, मान) जोड़ी में लौटा देता है, जैसा कि pop() विधि अन्य डेटा-प्रकारों के लिए करता है। (कुंजी, मान) जोड़ी टुपल डेटा-प्रकार की है, अर्थात कुंजी लौटाए गए टुपल का पहला तत्व है, और संबंधित मान उस (लौटाए गए) टुपल का दूसरा तत्व होगा। जब कोई कुंजी नाम टुपल डेटा-प्रकार का हो या उसका मान टुपल/सूची/डिक्शनरी डेटा-प्रकार का हो, तो आपको इनसे भ्रमित नहीं होना चाहिए। जैसा कि निम्नलिखित उदाहरण में भी है, अंतिम आइटम का मान एक सूची डेटा-प्रकार है, और इसलिए, popitem() विधि से लौटाए गए टुपल का दूसरा तत्व एक नेस्टेड सूची होगी। यदि मूल डिक्शनरी शाब्दिक एक खाली डिक्शनरी है, तो popitem() विधि से KeyError दिखाया जाएगा।

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}

my_item = my_dict.popitem()
print( my_dict, type( my_dict ) )
print( my_item, type( my_item ) )

{'': 'abc', None: 22} <class 'dict'>
('key', ['def', 'ghi']) <class 'tuple'>

copy(), clear()

    चूँकि डिक्शनरी शाब्दिक एक परिवर्तनशील डेटा-प्रकार है, clear() विधि कोई तर्क नहीं लेता है, और डिक्शनरी शाब्दिक से सभी आइटम हटा देता है, और मूल (original) डिक्शनरी शाब्दिक एक खाली डिक्शनरी बन जाएगा। इसी तरह, copy() विधि कोई तर्क नहीं लेता है, और यह आइटम (कुंजी:मान जोड़ी में) को दूसरे चर नाम पर कॉपी करता है। यह कार्य असाइनमेंट ऑपरेटर द्वारा भी किया जा सकता है।

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}

new_dict = my_dict.copy()
print( my_dict )
print( new_dict )
empty_dict = my_dict.clear()
print( empty_dict )   # आउटपुट None है।
print( my_dict )   # आउटपुट {} है।

{'': 'abc', None: 22, 'key': ['def', 'ghi']}
{'': 'abc', None: 22, 'key': ['def', 'ghi']}
None
{}

setdefault(self, key, default=None, /)

    जब setdefault() विधि के कोष्ठकों के अंदर कोई नई कुंजी और डिफ़ॉल्ट मान प्रदान किया जाता है, तो उन्हें कुंजी:मान युग्म में डिक्शनरी शाब्दिक में जोड़ा जाता है। जब दूसरा तर्क प्रदान नहीं किया जाता है, तो डिक्शनरी शाब्दिक में जोड़ा गया संबंधित कुंजी के लिए, डिफ़ॉल्ट मान None होता है। हालाँकि, जब कोई कुंजी नाम पहले से ही डिक्शनरी में मौजूद है, तो वह कुंजी:मान जोड़ी नहीं बदली जाएगी। यह विधि उपयोगी हो सकती है, जब किसी डिक्शनरी शाब्दिक में कुछ कुंजी नामों के लिए डिफ़ॉल्ट मान (उदाहरण के लिए, किसी व्यक्ति की प्रोफ़ाइल) जोड़े जाते हैं, जिन्हें बाद में संशोधित किया जा सकता है।

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}

value1 = my_dict.setdefault('address', "Not Available")   # उपरोक्त डिक्शनरी में नई कुंजी जोड़ी गई।
print(my_dict, value1)

value2 = my_dict.setdefault( 'middle_name' )   # यहाँ डिफ़ॉल्ट मान None है।
print(my_dict, value2)

value3 = my_dict.setdefault('key', "Will not be modified")   # डिक्शनरी शाब्दिक पर कोई प्रभाव नहीं पड़ता।
print(my_dict, value3)

{'': 'abc', None: 22, 'key': ['def', 'ghi'], 'address': 'Not Available'} Not Available
{'': 'abc', None: 22, 'key': ['def', 'ghi'], 'address': 'Not Available', 'middle_name': None} None
{'': 'abc', None: 22, 'key': ['def', 'ghi'], 'address': 'Not Available', 'middle_name': None} ['def', 'ghi']

fromkeys(iterable, value=None)

    आप fromkeys() विधि के अंदर पहले तर्क के रूप में, सूची/ट्यूपल डेटा-प्रकार के रूप में निर्दिष्ट कुंजियों के साथ एक नया डिक्शनरी बना सकते हैं। जब दूसरा तर्क प्रदान नहीं किया जाता है, तो संबंधित वस्तुओं का मूल्य None होगा।

new_sequence = (1, 2, 3, 4, 5)
new_dict = dict.fromkeys(new_sequence)
print( new_dict, type( new_dict ) )

my_dict = dict.fromkeys(new_sequence, 'Will be added later')
print( my_dict, type( my_dict ) )

{1: None, 2: None, 3: None, 4: None, 5: None} <class 'dict'>
{1: 'Will be added later', 2: 'Will be added later', 3: 'Will be added later', 4: 'Will be added later', 5: 'Will be added later'} <class 'dict'>

items(), keys(), values()

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}
print( my_dict.items(), type( my_dict.items() ) )
print( my_dict.keys(), type( my_dict.keys() ) )
print( my_dict.values(), type( my_dict.values() ) )

dict_items([('', 'abc'), (None, 22), ('key', ['def', 'ghi'])]) <class 'dict_items'>
dict_keys(['', None, 'key']) <class 'dict_keys'>
dict_values(['abc', 22, ['def', 'ghi']]) <class 'dict_values'>

    तीन डिक्शनरी विधियाँ, items(), keys(), और values विशेष अनुक्रम डेटा-प्रकार हैं, और क्रमशः dict_items (टुपल्स की सूची), dict_keys (कुंजी नामों की सूची) और dict_values (वस्तुओं के मूल्य की सूची) लौटाती हैं। आप उन्हें सूची या टुपल डेटा-प्रकारों में परिवर्तित कर सकते हैं या उन्हें सीधे for या while लूप में उपयोग कर सकते हैं।

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}
my_list = list( my_dict.items() )
key_list = list( my_dict.keys() )
values_list = list( my_dict.values() )
print( my_list, type( my_list ) )
print( key_list, type( key_list ) )
print( values_list, type( values_list ) )

[('', 'abc'), (None, 22), ('key', ['def', 'ghi'])] <class 'list'>
['', None, 'key'] <class 'list'>
['abc', 22, ['def', 'ghi']] <class 'list'>

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}
for key, value in my_dict.items():
    print( f"Key is {key} and its value is {value}." )   # इंडेंटेशन यहां महत्वपूर्ण है.

Key is   and its value is abc.
Key is None and its value is 22.
Key is key and its value is ['def', 'ghi'].

जांचें कि कोई कुंजी डिक्शनरी शाब्दिक में मौजूद है या नहीं

my_dict = {'': 'abc', None: 22, 'key': ['def', 'ghi']}

my_key = 'key'
if my_key in my_dict:
    print( f"Key {my_key} is present and its value is {my_dict[my_key]}." )   #

new_key = 'abc'
if new_key not in my_dict:
    print( f"Key {new_key} is not present." )   #
    print( f"{my_dict[new_key]}" )   # इसका मान निकालने पर ERROR आएगा।

Key key is present and its value is ['def', 'ghi'].
Key abc is not present.
Traceback (most recent call last):
  File "C:\xampp\htdocs\python2023\new.py", line 10, in <module>
    print( f"{my_dict[new_key]}" )   # Extracting its value will throw ERROR.
              ~~~~~~~^^^^^^^^^
KeyError: 'abc'

    आप अनुक्रम डेटा-प्रकार, जैसे स्ट्रिंग, सूची, टुपल या डिक्शनरी में किसी भी वर्ण (character) या आइटम/तत्व को, जैसा कि उपरोक्त उदाहरण में वर्णित है, in या not in कीवर्ड, और if कोड के ब्लॉक का उपयोग करके ढूंढ (खोज) सकते हैं।

विधि का नामलौटाया गया प्रकारविवरण
get()आइटम का डेटा-प्रकार, या डिफ़ॉल्टयदि आप get() विधि में दूसरा तर्क प्रदान नहीं करते हैं, None लौटाया जाएगा।
update()Noneupdate() विधि कभी भी, कुछ भी नहीं लौटाता है, अर्थात आपको अभिव्यक्ति को किसी चर नाम पर निर्दिष्ट करने की आवश्यकता नहीं है। update() विधि को सही ढंग से लागू करने के बाद मूल डिक्शनरी शाब्दिक को संशोधित किया जाता है!
pop()आइटम का डेटा-प्रकार, या दूसरा तर्कजब pop() विधि में दूसरा तर्क निर्दिष्ट नहीं है, तब KeyError (कुंजीत्रुटि) दिखाया जाएगा।
popitem()टपलअंतिम आइटम को हटाता है और कुंजी:मान जोड़ी को टुपल शाब्दिक में आइटम के रूप में लौटाता है।
copy()dictवही डिक्शनरी शाब्दिक दूसरे चर नाम को सौंपा जाता है
clear()dictमूल डिक्शनरी शाब्दिक एक खाली डिक्शनरी बन जाएगा।
items()dict_itemsविशेष डेटा-प्रकार
keys()dict_keysविशेष डेटा-प्रकार
values()dict_valuesविशेष डेटा-प्रकार
fromkeys()dictसूची/ट्यूपल अनुक्रम डेटा-प्रकार से नया डिक्शनरी शाब्दिक बनाया जाएगा।
setdefault()dictजब आप कोई नई कुंजी जोड़ने का प्रयास करेंगे तो यह विधि सहायक होगी।


Leave a Comment: