পাইথনের চারটি ডেটা সংগ্রহের ধরন রয়েছে:তালিকা, টিপল, সেট এবং অভিধান। সংগ্রহ পাইথন মডিউল অতিরিক্ত বিকল্প প্রদান করে, সহ namedtuple
, Counter
, defaultdict
, এবং ChainMap
।
পাইথন চারটি সংগ্রহের ডেটা প্রকার অফার করে:তালিকা, টিপল, সেট এবং অভিধান। এই ডেটা টাইপের প্রতিটি নির্দিষ্ট পরিস্থিতিতে দরকারী।
উদাহরণস্বরূপ, যেহেতু তালিকাগুলি পরিবর্তন করা যেতে পারে, আপনি ছাত্রদের নামের একটি বিবর্তিত তালিকা সংরক্ষণ করতে একটি ব্যবহার করতে চাইতে পারেন। অথবা ধরুন আপনি আইসক্রিমের স্বাদের একটি তালিকা সংরক্ষণ করতে চান যা কখনই পরিবর্তন হবে না। একটি টিপল, যার বিষয়বস্তু পরিবর্তন করা যাবে না, আরও উপযুক্ত হতে পারে৷
৷প্রায়শই, আপনি যখন পাইথনে কাজ করেন, আপনি দেখতে পারেন যে এই ডেটা প্রকারগুলি আপনি যে সমস্ত বৈশিষ্ট্যগুলি খুঁজছেন তা অফার করে না। ভাগ্যক্রমে, একটি পাইথন মডিউল রয়েছে যা আপনি ডেটা সংগ্রহের সাথে সম্পর্কিত আরও উন্নত বৈশিষ্ট্যগুলি অ্যাক্সেস করতে ব্যবহার করতে পারেন:পাইথন সংগ্রহ মডিউল৷
পাইথন সংগ্রহ মডিউল তৈরি করা হয়েছিল বিল্ট-ইন সংগ্রহের বিকল্পগুলির কার্যকারিতা উন্নত করতে এবং ডেটা স্ট্রাকচারের সাথে কাজ করার সময় ডেভেলপারদের আরও নমনীয়তা দিতে। এই নির্দেশিকায়, আমরা পাইথন সংগ্রহ মডিউলের মৌলিক বিষয়গুলি ভেঙে দেব এবং মডিউল থেকে সর্বাধিক ব্যবহৃত চারটি ডেটা স্ট্রাকচার অন্বেষণ করব৷
সংগ্রহ রিফ্রেশার
সংগ্রহগুলি হল ধারক ডেটা প্রকার যা ডেটা সংরক্ষণ করতে ব্যবহার করা যেতে পারে। যেমন আগে আলোচনা করা হয়েছে, সংগ্রহগুলি তালিকা, সেট, টিপল এবং অভিধান সংরক্ষণ করতে পারে। এই ডেটা টাইপের প্রত্যেকটির নিজস্ব বৈশিষ্ট্য রয়েছে।
তালিকা
একটি তালিকা একটি আদেশকৃত, পরিবর্তনযোগ্য ডেটা টাইপ যা ডেটা সংরক্ষণ করতে ব্যবহার করা যেতে পারে যা সময়ের সাথে সাথে পরিবর্তিত হতে পারে। উদাহরণস্বরূপ, আপনি বিদ্যমান তালিকা আইটেম যোগ, অপসারণ এবং আপডেট করতে পারেন। তালিকায় ডুপ্লিকেট মান থাকতে পারে। আপনি একটি তালিকার মধ্যে পৃথক আইটেম উল্লেখ করতে সূচক নম্বর ব্যবহার করতে পারেন।
নিম্নলিখিতটি পাইথনে একটি তালিকা ঘোষণা করার একটি উদাহরণ:
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
sandwiches = ["Cheese", "Ham", "Tuna", "Egg Mayo"]
টিপলস
Tuples অর্ডার করা হয় এবং অপরিবর্তনীয় ডেটা প্রকার। যদিও টিপলে ডুপ্লিকেট মান থাকতে পারে, তবে তাদের মান পরিবর্তন করা যাবে না। Tuples কোঁকড়া বন্ধনী দ্বারা বেষ্টিত হয়.
এখানে পাইথন টিপলের একটি উদাহরণ:
sandwiches = ("Cheese", "Ham", "Tuna", "Egg Mayo")
সেট
সেটগুলি হল অবিন্যস্ত তালিকা। তারা বর্গাকার বন্ধনী ব্যবহার করে ঘোষণা করা হয়. তালিকার বিপরীতে, সেটগুলির সূচী মান থাকে না এবং সদৃশ এন্ট্রি অন্তর্ভুক্ত করতে পারে না।
এখানে পাইথন সেটের একটি উদাহরণ রয়েছে:
sandwiches = {"Cheese", "Ham", "Tuna", "Egg Mayo"}
অভিধানসমূহ
ডিকশনারীগুলি হল ক্রমবিন্যস্ত, পরিবর্তনযোগ্য ডেটা প্রকার যা সূচীভুক্ত করা যেতে পারে। একটি অভিধানে প্রতিটি আইটেমের একটি কী এবং একটি মান রয়েছে।
এখানে একটি পাইথন অভিধান এন্ট্রির একটি উদাহরণ:
sandwich = { "name": "Cheese", "price": 8.95 }
এই চারটি ডেটা প্রকারের পাইথনে বিভিন্ন ধরনের ব্যবহার রয়েছে। যাইহোক, আপনি যদি পাইথন কন্টেইনার ডেটা প্রকারের সাথে আরও উন্নত ক্রিয়া সম্পাদন করতে চান তবে পাইথন সংগ্রহ মডিউলটি বিবেচনা করার মতো।
সংগ্রহ মডিউল
পাইথন সংগ্রহ মডিউলটিতে অনেকগুলি বিশেষায়িত ডেটা স্ট্রাকচার রয়েছে যা আপনি পাইথনের অন্তর্নির্মিত কন্টেইনারগুলি ছাড়াও বা বিকল্প হিসাবে ব্যবহার করতে পারেন। কারণ collections
একটি মডিউল, আমাদের এটি আমাদের প্রোগ্রামে আমদানি করতে হবে। তবে এটি পাইথনে তৈরি, তাই আমাদের সেকেন্ডারি লাইব্রেরি আমদানি করতে হবে না।
এই নিবন্ধে, আমরা সংগ্রহ মডিউল থেকে সর্বাধিক ব্যবহৃত চারটি ডেটা স্ট্রাকচারের উপর ফোকাস করব। এগুলি নিম্নরূপ:
- কাউন্টার
- নামেডটুপল
- ডিফল্ট ডিক্ট
- চেইনম্যাপ
কাউন্টার
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
.
আমাদের কোডে অনেক কিছু চলছে, তাই আসুন এটি ভেঙে ফেলি।
প্রথম লাইনে, আমরা 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
এর সাথে যুক্ত আইটেমটি প্রিন্ট করার চেষ্টা করি , আমাদের প্রোগ্রামটি একটি ফাঁকা লাইন প্রদান করে কারণ সেই সূচকে কোনো মান নির্ধারিত নেই।
একটি আদর্শ অভিধানে, আমাদের প্রোগ্রাম একটি কী-এরর ফেরত দেবে। যাইহোক, কারণ আমরা defaultdict
ব্যবহার করেছি , আমাদের প্রোগ্রাম পরিবর্তে আমরা অভিধান তৈরি করার সময় নির্দিষ্ট করা ডেটা টাইপ প্রদান করে। উপরের উদাহরণে, আমরা বলেছি যে কোনো অবৈধ কী একটি str
প্রদান করবে , কিন্তু আমরা একটি পূর্ণসংখ্যা বা অন্য কোনো বৈধ ডেটা টাইপ ফেরত দিতে এটি কোড করতে পারতাম।
এই ফাংশনটি উপযোগী হতে পারে যখন আপনি একাধিক আইটেমের উপর একটি অপারেশন করার জন্য একটি অভিধানের সাথে কাজ করছেন কিন্তু অপারেশনটি প্রতিটি আইটেমে কাজ নাও করতে পারে। আপনার প্রোগ্রামটি একটি ত্রুটি ফেরত দেওয়ার পরিবর্তে, defaultdict()
একটি ডিফল্ট মান ফিরিয়ে দেবে এবং চলতে থাকবে৷
চেইনম্যাপ
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({'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'})
আমরা আমাদের চেইনম্যাপে প্রতিটি মানকে এর মূল নাম উল্লেখ করে অ্যাক্সেস করতে পারি। উদাহরণস্বরূপ, এখানে কোডের একটি লাইন রয়েছে যা আমাদের BLT স্যান্ডউইচের মূল্য পুনরুদ্ধার করতে দেয়:
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
এ এর দাম পরিবর্তন করেছি অভিধান।
চেইনম্যাপ অবজেক্টে দুটি ফাংশনও রয়েছে যা একটি বস্তু থেকে কী বা মান পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে। আমরা 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()
উপরের পদ্ধতি।
উপরন্তু, আপনি 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
.
এখন আপনি একজন বিশেষজ্ঞের মতো পাইথন সংগ্রহ মডিউলের সাথে কাজ শুরু করার জন্য প্রয়োজনীয় জ্ঞান দিয়ে সজ্জিত!
আপনি কি জানতে আগ্রহী যে কিভাবে পাইথন শেখা আপনাকে প্রযুক্তিতে ক্যারিয়ার গড়তে সাহায্য করতে পারে? আজই বিনামূল্যের ক্যারিয়ার কর্ম অ্যাপ ডাউনলোড করুন এবং আমাদের একজন বিশেষজ্ঞ ক্যারিয়ার কোচের সাথে কথা বলুন!