Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन कलेक्शन्स मॉड्यूल: स्टेप-बाय-स्टेप गाइड

पायथन में चार डेटा कलेक्शन टाइप्स हैं: लिस्ट्स, टपल्स, सेट्स, और डिक्शनरीज। कलेक्शन्स पायथन मॉड्यूल namedtuple, Counter, defaultdict, और ChainMap सहित अतिरिक्त विकल्प प्रदान करता है।


पायथन चार कलेक्शन डेटा टाइप्स प्रदान करता है: लिस्ट्स, टपल्स, सेट्स, और डिक्शनरीज। इनमें से प्रत्येक डेटा टाइप विशिष्ट स्थितियों में उपयोगी है।

उदाहरण के लिए, क्योंकि लिस्ट्स को मॉडिफाई किया जा सकता है, आप छात्र नामों की एक विकसित होती सूची को स्टोर करने के लिए एक का उपयोग करना चाह सकते हैं। या मान लीजिए आप आइसक्रीम फ्लेवर्स की एक सूची स्टोर करना चाहते हैं जो कभी नहीं बदलेगी। एक टपल, जिसकी सामग्री को मॉडिफाई नहीं किया जा सकता, अधिक उपयुक्त हो सकता है।

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

पायथन कलेक्शन्स मॉड्यूल को बिल्ट-इन कलेक्शन विकल्पों की कार्यक्षमता में सुधार करने और डेवलपर्स को डेटा संरचनाओं के साथ काम करते समय अधिक लचीलापन देने के लिए बनाया गया था। इस गाइड में, हम पायथन कलेक्शन्स मॉड्यूल की मूल बातें तोड़ेंगे और मॉड्यूल से चार सबसे अधिक उपयोग की जाने वाली डेटा संरचनाओं का पता लगाएंगे।

कलेक्शन्स रिफ्रेशर

कलेक्शन्स कंटेनर डेटा टाइप्स हैं जिनका उपयोग डेटा स्टोर करने के लिए किया जा सकता है। जैसा कि पहले चर्चा की गई थी, कलेक्शन्स लिस्ट्स, सेट्स, टपल्स, और डिक्शनरीज स्टोर कर सकते हैं। इनमें से प्रत्येक डेटा टाइप की अपनी विशेषताएं हैं।

लिस्ट्स

एक लिस्ट एक क्रमबद्ध, म्यूटेबल डेटा टाइप है जिसका उपयोग उस डेटा को स्टोर करने के लिए किया जा सकता है जो समय के साथ बदल सकता है। उदाहरण के लिए, आप मौजूदा लिस्ट आइटम्स को जोड़, हटा, और अपडेट कर सकते हैं। लिस्ट्स में डुप्लिकेट मान हो सकते हैं। आप लिस्ट के भीतर व्यक्तिगत आइटम्स को संदर्भित करने के लिए इंडेक्स नंबरों का उपयोग कर सकते हैं।

पायथन में लिस्ट घोषित करने का एक उदाहरण निम्नलिखित है:

sandwiches = ["Cheese", "Ham", "Tuna", "Egg Mayo"]

टपल्स

टपल्स क्रमबद्ध और इम्यूटेबल डेटा टाइप्स हैं। हालांकि टपल्स में डुप्लिकेट मान हो सकते हैं, उनके मानों को बदला नहीं जा सकता। टपल्स को कर्ली ब्रैकेट्स से घेरा जाता है।

यहां पायथन टपल का एक उदाहरण है:

sandwiches = ("Cheese", "Ham", "Tuna", "Egg Mayo")

सेट्स

सेट्स अनऑर्डर्ड लिस्ट्स हैं। उन्हें वर्गाकार कोष्ठक का उपयोग करके घोषित किया जाता है। लिस्ट्स के विपरीत, सेट्स में इंडेक्स मान नहीं होते हैं और उनमें डुप्लिकेट एंट्रीज शामिल नहीं हो सकतीं।

यहां पायथन सेट का एक उदाहरण है:

sandwiches = {"Cheese", "Ham", "Tuna", "Egg Mayo"}

डिक्शनरीज

डिक्शनरीज अनऑर्डर्ड, परिवर्तनीय डेटा टाइप्स हैं जिन्हें इंडेक्स किया जा सकता है। डिक्शनरी में प्रत्येक आइटम की एक की और एक वैल्यू होती है।

यहां पायथन डिक्शनरी एंट्री का एक उदाहरण है:

sandwich = { "name": "Cheese", "price": 8.95 }

इन चार डेटा टाइप्स के पायथन में उपयोगों की एक विस्तृत विविधता है। हालांकि, यदि आप पायथन कंटेनर डेटा टाइप्स के साथ अधिक उन्नत क्रियाएं करने की तलाश में हैं, तो पायथन कलेक्शन्स मॉड्यूल पर विचार करने योग्य है।

कलेक्शन्स मॉड्यूल

पायथन कलेक्शन्स मॉड्यूल में कई विशेष डेटा संरचनाएं होती हैं जिनका उपयोग आप पायथन के बिल्ट-इन कंटेनरों के अलावा - या उनके विकल्प के रूप में - कर सकते हैं। क्योंकि collections एक मॉड्यूल है, हमें इसे अपने प्रोग्राम में इंपोर्ट करना होगा। हालांकि यह पायथन में बिल्ट-इन है, इसलिए हमें सेकेंडरी लाइब्रेरी डाउनलोड करने की आवश्यकता नहीं है।

इस लेख में, हम कलेक्शन्स मॉड्यूल से चार सबसे अधिक उपयोग की जाने वाली डेटा संरचनाओं पर ध्यान केंद्रित करेंगे। ये इस प्रकार हैं:

  • Counter
  • namedtuple
  • defaultdict
  • ChainMap

Counter

Counter() डिक्शनरी ऑब्जेक्ट का एक सबक्लास है और इसका उपयोग हैशेबल ऑब्जेक्ट्स को गिनने के लिए किया जा सकता है। Counter() फंक्शन एक आर्गुमेंट के रूप में एक इटरेबल लेता है और एक डिक्शनरी रिटर्न करता है।

तो, मान लीजिए कि हमारे पास जनवरी के लिए सैंडविच ऑर्डर की एक सूची है और हम जानना चाहते हैं कि उस महीने के दौरान हमने कितने BLT सैंडविच बेचे। हम ऐसा करने के लिए Counter() फंक्शन का उपयोग कर सकते हैं।

यहां वह कोड दिया गया है जिसका हम उपयोग करेंगे:

from collections import Counter sandwich_sales = ["BLT", "Egg Mayo", "Ham", "Ham", "Ham", "Cheese", "BLT", "Cheese"] our_counter = Counter(sandwich_sales) print(our_counter["BLT"])

हमारा प्रोग्राम रिटर्न करता है: 2।

हमारे कोड में बहुत कुछ चल रहा है, तो आइए इसे तोड़ दें।

पहली लाइन पर, हम collections से Counter फंक्शन इंपोर्ट करते हैं। हमें ऐसा करना होगा क्योंकि collections एक मॉड्यूल है। फिर, हम अपना sandwich_sales सरणी घोषित करते हैं, जो जनवरी में हमने कितने सैंडविच बेचे, स्टोर करता है।

अगली लाइन पर, हम our_counter वेरिएबल घोषित करते हैं और इसे Counter(sandwich_sales) फंक्शन असाइन करते हैं। यह हमें our_counter को संदर्भित करते समय Counter() फंक्शन के परिणाम तक पहुंचने की अनुमति देता है।

अंत में, हम print(our_counter[“BLT”]) का उपयोग करके प्रिंट करते हैं कि हमारी डिक्शनरी में कितने सैंडविच BLT के बराबर हैं। इस मामले में, उत्तर 2 था।

namedtuple

namedtuple() मेथड प्रत्येक पोजीशन के नामों के साथ एक टपल रिटर्न करता है। जब आप एक स्टैंडर्ड टपल के साथ काम कर रहे होते हैं, तो व्यक्तिगत मानों तक पहुंचने का एकमात्र तरीका टपल के इंडेक्स नंबरों को संदर्भित करना है। यदि आप एक बड़े टपल के साथ काम कर रहे हैं, तो यह जल्दी से भ्रमित करने वाला हो सकता है।

यहां सैंडविच के नाम और कीमत को स्टोर करने के लिए namedtuple() मेथड का उपयोग करने का एक उदाहरण है:

from collections import namedtuple Sandwich = namedtuple("Sandwich", "name, price") first_sandwich = Sandwich("Chicken Teriyaki", "$3.00") print(first_sandwich.price)

हमारा प्रोग्राम रिटर्न करता है: $3.00।

हमारे कोड में बहुत कुछ चल रहा है, तो आइए इसे तोड़ दें। पहली लाइन पर, हम collections मॉड्यूल से namedtuple इंपोर्ट करते हैं ताकि हम इसे अपने कोड में उपयोग कर सकें।

अगली लाइन पर, हम Sandwich नाम के साथ Sandwich टपल बनाते हैं, और इसे दो हेडर असाइन करते हैं: name और price। यह हमें बाद में अपने कोड में इन हेडर्स का उपयोग करके अपने टपल्स में मानों को संदर्भित करने की अनुमति देता है। अगला, हम first_sandwich नामक एक वेरिएबल घोषित करते हैं, जिसे हम टपल आइटम Chicken Teriyaki असाइन करते हैं।

अंत में, हम अपने first_sandwich की कीमत प्रिंट करते हैं, जो इस मामले में $3.00 है।

आप लिस्ट का उपयोग करके भी namedtuple() बना सकते हैं। यहां एक उदाहरण है:

second_sandwich = Sandwich._make(["Spicy Italian", "$3.75"]) print(second_sandwich.name)

हमारा प्रोग्राम रिटर्न करता है: Spicy Italian। इस उदाहरण में, हम अपनी Sandwich आइटम के अलावा _make का उपयोग यह दर्शाने के लिए करते हैं कि हम अपनी लिस्ट को namedtuple() में बदलना चाहते हैं।

defaultdict

defaultdict() मेथड का उपयोग एक पायथन डिक्शनरी बनाने के लिए किया जा सकता है जो KeyError नहीं फेंकता जब आप किसी ऐसे ऑब्जेक्ट को एक्सेस करने का प्रयास करते हैं जो मौजूद नहीं है। इसके बजाय, यदि आप किसी गैर-मौजूद ऑब्जेक्ट को संदर्भित करते हैं, तो डिक्शनरी एक पूर्वनिर्धारित डेटा टाइप रिटर्न करेगी।

यहां एक उदाहरण है जो defaultdict() मेथड का उपयोग एक डिक्शनरी घोषित करने के लिए करता है जो एक गैर-मौजूद ऑब्जेक्ट को संदर्भित करने पर str रिटर्न करेगा:

from collections import defaultdict sandwiches = defaultdict(str) sandwiches[0] = "Ham and Cheese" sandwiches[1] = "BLT" print(sandwiches[1]) print(sandwiches[2])

हमारा प्रोग्राम रिटर्न करता है:

BLT // यह एक खाली लाइन है

उपरोक्त उदाहरण में, हमने इंडेक्स पोजीशन और 1 पर मानों के साथ एक डिक्शनरी बनाई। जब हम sandwiches[1] प्रिंट करते हैं, तो हम देख सकते हैं कि हमारी डिक्शनरी ने हमारे मानों को स्टोर किया। हालांकि, जब हम इंडेक्स मान 2 से जुड़े आइटम को प्रिंट करने का प्रयास करते हैं, तो हमारा प्रोग्राम एक खाली लाइन रिटर्न करता है क्योंकि उस इंडेक्स को कोई मान असाइन नहीं किया गया है।

एक स्टैंडर्ड डिक्शनरी में, हमारा प्रोग्राम KeyError रिटर्न करेगा। हालांकि, क्योंकि हमने defaultdict का उपयोग किया, हमारा प्रोग्राम इसके बजाय वह डेटा टाइप रिटर्न करता है जिसे हमने डिक्शनरी बनाते समय निर्दिष्ट किया था। उपरोक्त उदाहरण में, हमने कहा कि किसी भी अमान्य की को str रिटर्न करना चाहिए, लेकिन हम इसे इंटीजर या किसी अन्य वैध डेटा टाइप को रिटर्न करने के लिए कोड कर सकते थे।

यह फंक्शन उपयोगी हो सकता है जब आप कई आइटम्स पर ऑपरेशन करने के लिए डिक्शनरी के साथ काम कर रहे हों लेकिन ऑपरेशन प्रत्येक आइटम पर काम न करे। अपने प्रोग्राम को एरर रिटर्न करने के बजाय, defaultdict() एक डिफ़ॉल्ट मान रिटर्न करेगा और चलता रहेगा।

ChainMap

ChainMap() मेथड का उपयोग दो या अधिक डिक्शनरीज को संयोजित करने के लिए किया जाता है; यह डिक्शनरीज की एक सूची रिटर्न करता है। उदाहरण के लिए, मान लीजिए कि हमारे पास दो मेनू हैं - एक स्टैंडर्ड मेनू और एक सीक्रेट मेनू - जिन्हें हम एक बड़े मेनू में मर्ज करना चाहते हैं। ऐसा करने के लिए, हम ChainMap() फंक्शन का उपयोग कर सकते हैं।

यहां हमारे स्टैंडर्ड और सीक्रेट मेनू को मर्ज करने के लिए ChainMap() का उपयोग करने का एक उदाहरण है:

from collections import ChainMap standard_menu = { "BLT": "$3.05", "Roast Beef": "$3.55", "Cheese": "$2.85", "Shrimp": "$3.55", "Ham": "$2.85" } secret_menu = { "Steak": "$3.60", "Tuna Special": "$3.20", "Turkey Club": "$3.20" } menu = ChainMap(standard_menu, secret_menu) print(menu)

हमारा कोड एक ChainMap ऑब्जेक्ट रिटर्न करता है जिसने हमारे दो मेनू को एक साथ मर्ज किया, इस प्रकार:

ChainMap({'BLT': '$3.05', 'Roast Beef': '$3.55', 'Cheese': '$2.85', 'Shrimp': '$3.55', 'Ham': '$2.85'}, {'Steak': '$3.60', 'Tuna Special': '$3.20', 'Turkey Club': '$3.20'})

हम अपने ChainMap में प्रत्येक मान को उसके की नाम को संदर्भित करके एक्सेस कर सकते हैं। उदाहरण के लिए, यहां कोड की एक लाइन है जो हमें BLT सैंडविच की कीमत पुनः प्राप्त करने की अनुमति देती है:

print(menu["BLT"])

हमारा प्रोग्राम रिटर्न करता है: $3.05

इसके अलावा, यह ध्यान रखना महत्वपूर्ण है कि ChainMap अपडेट होता है जब इसमें मौजूद डिक्शनरीज अपडेट होती हैं। इसलिए, यदि आप standard_menu या secret_menu डिक्शनरीज में कोई मान बदलते हैं, तो ChainMap ऑब्जेक्ट भी अपडेट हो जाएगा। यहां एक उदाहरण है:

print(menu) standard_menu["BLT"] = "$3.10" print(menu)

हमारा कोड रिटर्न करता है:

ChainMap({'BLT': '$3.10', 'Roast Beef': '$3.55', 'Cheese': '$2.85', 'Shrimp': '$3.55', 'Ham': '$2.85'}, {'Steak': '$3.60', 'Tuna Special': '$3.20', 'Turkey Club': '$3.20'})

जैसा कि आप देख सकते हैं, हमारे BLT की कीमत $3.05 से $3.10 हो गई क्योंकि हमने इसकी कीमत अपनी standard_menu डिक्शनरी में बदल दी।

ChainMap ऑब्जेक्ट में दो फंक्शन्स भी शामिल हैं जिनका उपयोग किसी ऑब्जेक्ट से कीज या वैल्यूज प्राप्त करने के लिए किया जा सकता है। हम keys() और values() मेथड्स का उपयोग करके इसे चित्रित कर सकते हैं। ये मेथड्स हमारे डेटा की कीज (जिनका उपयोग हम किसी विशेष मान को संदर्भित करने के लिए कर सकते हैं) और उन्हें असाइन किए गए वैल्यूज को रिटर्न करते हैं:

print(list(menu.keys())) print(list(menu.values()))

हमारा कोड निम्नलिखित रिटर्न करता है:

['Steak', 'Tuna Special', 'Turkey Club', 'BLT', 'Roast Beef', 'Cheese', 'Prawn', 'Ham'] ['$3.60', '$3.20', '$3.20', '$3.05', '$3.55', '$2.85', '$3.55', '$2.85']

जब हमने ऊपर keys() और values() मेथड्स का उपयोग किया तो हमारे कोड ने हमारे ChainMap ऑब्जेक्ट में प्रत्येक आइटम की कीज और वैल्यूज रिटर्न कीं।

इसके अलावा, आप new_child() मेथड का उपयोग करके ChainMap ऑब्जेक्ट में एक नई डिक्शनरी जोड़ सकते हैं। मान लीजिए कि हमारे सैंडविच शेफ टेस्ट मेनू पर नए सैंडविच आज़मा रहे हैं और उनमें से दो को हमारे नए मेनू में जोड़ना चाहते हैं। हम इस लक्ष्य को प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं:

test_menu = { "Veggie Deluxe": "$3.00", "House Club Special": "$3.65" } new_menu = menu.new_child(test_menu) print(new_menu)

हमारा कोड एक अपडेटेड ChainMap रिटर्न करता है जिसमें हमारे नए सैंडविच डिक्शनरी की शुरुआत में हैं, इस प्रकार:

ChainMap({'Veggie Deluxe': '$3.00', 'House Club Special': '$3.65'}, {'BLT': '$3.05', 'Roast Beef': '$3.55', 'Cheese': '$2.85', 'Shrimp': '$3.55', 'Ham': '$2.85'}, {'Steak': '$3.60', 'Tuna Special': '$3.20', 'Turkey Club': '$3.20'})

निष्कर्ष

हम पायथन कलेक्शन्स मॉड्यूल का उपयोग पायथन द्वारा प्रदान किए गए बिल्ट-इन कलेक्शन्स को विस्तारित करने और कस्टम डेटा संरचना मेथड्स तक पहुंचने के लिए कर सकते हैं। यह सहायक है यदि आप एक कलेक्शन डेटा टाइप, जैसे लिस्ट या टपल, के साथ काम करना चाहते हैं, लेकिन एक निश्चित फंक्शन करने की आवश्यकता है जो वैनिला (या plain) पायथन में नहीं आता है।

इस गाइड में, उदाहरणों का उपयोग करके, हमने पायथन में कलेक्शन्स का उपयोग कैसे करें, इस पर चर्चा की और लाइब्रेरी द्वारा प्रदान किए गए चार मुख्य मेथड्स: Counter, namedtuple, defaultdict, और ChainMap पर चर्चा की।

अब आप पायथन कलेक्शन्स मॉड्यूल के साथ एक विशेषज्ञ की तरह काम करना शुरू करने के लिए आवश्यक ज्ञान से लैस हैं!

क्या आप जानने के लिए उत्सुक हैं कि पायथन सीखना आपको टेक में करियर बनाने में कैसे मदद कर सकता है? आज ही मुफ्त Career Karma ऐप डाउनलोड करें और हमारे विशेषज्ञ करियर कोचों में से एक से बात करें!

  1. पायथन इंटरप्रेटर्स: एक चरण-दर-चरण गाइड पायथन इंटरप्रेटर्स: एक चरण-दर-चरण गाइड

    पायथन प्रोग्राम कैसे एक्जीक्यूट होता है? पायथन, जावा की तरह, पूरी तरह से इंटरप्रेटेड भाषा के रूप में वर्गीकृत नहीं किया जा सकता और न ही कंपाइल्ड भाषा के रूप में। यह दोनों का थोड़ा सा है। कंपाइल्ड होने का मतलब इस उदाहरण में है किसी प्लेटफॉर्म पर निर्भर न करने वाली निचले स्तर की भाषा में अनुवादित होन

  1. - पायथन पावर: चरण-दर-चरण गाइड

    पायथन पावर: चरण-दर-चरण गाइड ** ऑपरेटर और pow() फ़ंक्शन पायथन में किसी संख्या की घात की गणना करते हैं। ** ऑपरेटर बाईं ओर की संख्या को दाईं ओर की संख्या की घात तक बढ़ाता है। pow() फ़ंक्शन पहले पैरामीटर को दूसरे पैरामीटर की घात तक बढ़ाता है। किसी संख्या की घात की गणना करना एक सामान्य गणितीय संक्रिया ह

  1. - पायथन फाइल का नाम बदलें: चरण-दर-चरण गाइड

    पायथन फाइल का नाम बदलें: चरण-दर-चरण गाइड पायथन os.rename() विधि फाइल का नाम बदलती है। os.rename() दो तर्क स्वीकार करती है: पुरानी फाइल का पथ और नई फाइल का पथ। नए फाइल पथ का अंत एक अलग फाइल नाम में होना चाहिए। जब आप पायथन में फाइलों के साथ काम कर रहे होते हैं, तो आप तय कर सकते हैं कि आप किसी विशेष फ