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

पायथन संग्रह:एक चरण-दर-चरण मार्गदर्शिका

पायथन के चार डेटा संग्रह प्रकार हैं:सूचियाँ, टुपल्स, सेट और शब्दकोश। संग्रह पायथन मॉड्यूल . सहित अतिरिक्त विकल्प प्रदान करता है namedtuple , Counter , defaultdict , और ChainMap .


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

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

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

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

संग्रह पुनश्चर्या

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

सूचियां

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

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

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

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

टुपल्स

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

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

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

सेट

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

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

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

शब्दकोश

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

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

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

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

संग्रह मॉड्यूल

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

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

  • काउंटर
  • नामांकित टुपल
  • डिफ़ॉल्ट तानाशाही
  • चेनमैप

काउंटर

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

तो, मान लें कि हमारे पास जनवरी के सैंडविच ऑर्डर की एक सूची है और हम जानना चाहते हैं कि उस महीने हमने कितने बीएलटी सैंडविच बेचे। हम 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 .

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

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

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

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

नामांकित टुपल

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

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

from collections import namedtuple

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

हमारा कार्यक्रम वापस आता है:$3.00

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

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

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

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

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

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

डिफ़ॉल्ट तानाशाही

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
// This is a blank line

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

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

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

चेनमैप

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

यहां ChainMap() using का उपयोग करने का एक उदाहरण दिया गया है हमारे मानक और गुप्त मेनू को मर्ज करने के लिए:

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({'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'})

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

print(menu["BLT"])

हमारा कार्यक्रम वापस आता है:$3.05

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

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() का उपयोग किया, तो हमारे कोड ने हमारे ChainMap ऑब्जेक्ट में प्रत्येक आइटम की कुंजियों और मानों को वापस कर दिया। और values() उपरोक्त तरीके।

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

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

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

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 .

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

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


  1. पायथन दुभाषिए:एक चरण-दर-चरण मार्गदर्शिका

    पायथन सीखने के लिए सुपर सुलभ है क्योंकि पायथन दुभाषिए ऑनलाइन मौजूद हैं, यह सुनिश्चित किए बिना कि आपके पास अपनी मशीन पर पायथन का सही संस्करण स्थापित है। इस लेख में, हम बात करते हैं कि पायथन इंटरप्रेटर क्या है और ऑनलाइन उपयोग के लिए उपलब्ध कुछ अधिक लोकप्रिय, शुरुआती-अनुकूल दुभाषियों की सूची बनाएं।

  1. पायथन पावर:एक चरण-दर-चरण मार्गदर्शिका

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

  1. पायथन का नाम बदलें फ़ाइल:एक चरण-दर-चरण मार्गदर्शिका

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