কম্পিউটার টিউটোরিয়াল

পাইথনে ডিকশনারি কে ভ্যালু অনুযায়ী সর্ট করা

ডিকশনারি একটি আনঅর্ডারড ডেটা স্ট্রাকচার। এটি ডেটা সংরক্ষণের জন্য ম্যাপিং স্ট্রাকচার ব্যবহার করে। ডিকশনারি কী-কে ভ্যালু-এর সাথে ম্যাপ করে, সংশ্লিষ্ট ডেটা ধারণকারী জোড়া তৈরি করে।

পাইথনের sorted() মেথড ব্যবহার করে আপনি একটি ডিকশনারির কন্টেন্টকে ভ্যালু অনুযায়ী সর্ট করতে পারেন। উদাহরণস্বরূপ, একটি কফি মেনুর আইটেমগুলোর জনপ্রিয়তা র‍্যাঙ্ক করার জন্য পাইথনের sorted() মেথড ব্যবহার করা যায়। এই টিউটোরিয়ালে sorted() মেথড কীভাবে কাজ করে এবং কীভাবে এটি ব্যবহার করে ডিকশনারির কন্টেন্ট সর্ট করা যায় তা আলোচনা করা হবে।

পাইথন sorted() রিফ্রেশার

পাইথনের বিল্ট-ইন sorted() ফাংশন ইটেরেবল অবজেক্টগুলো (যেমন লিস্ট, টাপল, ডিকশনারি) সর্ট করতে ব্যবহার করা যায়। sorted() ফাংশন নির্দিষ্ট ইটেরেবল অবজেক্টের আইটেমগুলো সর্ট করে এবং নতুন সর্ট করা ভ্যালুদের সাথে একটি নতুন অবজেক্ট তৈরি করে।

sorted() মেথডের সিনট্যাক্স:

sorted(object, key, reverse)

এই মেথড তিনটি প্যারামিটার নেয়:

  • object: সর্ট করার ইটেরেবল অবজেক্ট (রিকোয়ার্ড)
  • key: কাস্টম সর্ট অপারেশন করার ফাংশন (অপশনাল)
  • reverse: অবজেক্ট ডিসেন্ডিং অর্ডারে সর্ট হবে কিনা তা স্পেসিফাই করে (অপশনাল)

দেখা যাচ্ছে, object একমাত্র রিকোয়ার্ড প্যারামিটার। আপনি যদি অপশনাল key এবং reverse প্যারামিটার ব্যবহার না করেন, তবে পাইথন অবজেক্টটি অ্যাসেন্ডিং অর্ডারে সর্ট করবে।

নোট: Career Karma পাইথনে sort() এবং sorted() মেথড নিয়ে একটি পূর্ণাঙ্গ গাইড লিখেছে। আপনি যদি এই মেথড এবং key প্যারামিটার সম্পর্কে আরও জানতে চান, তবে আমাদের পাইথন sort() টিউটোরিয়াল দেখুন।

চলুন sorted() মেথড কীভাবে কাজ করে তা বোঝার জন্য একটি দ্রুত উদাহরণ দেখা যাক।

মান লিন আমরা একটি কফি শপ চালাচ্ছি এবং আমাদের Coffee Club (লয়ালটি) কাস্টমারদের একটি অ্যালফাবেটিক্যাল লিস্ট চাই। আমাদের ইতিমধ্যে কাস্টমারদের একটি লিস্ট আছে, কিন্তু সেটি সাইন-আপ ডেট অনুযায়ী অর্ডার করা। নিচের কোড ব্যবহার করে আমরা আমাদের লিস্ট সর্ট করতে পারি:

customers = ['Kaley Fernandez', 'Darius Rowland', 'Isaac Borthwick', 'Alexandria Kidd']
sorted_customers = sorted(customers)
print(sorted_customers)

আমাদের কোড customers অ্যারে সর্ট করে এবং নিম্নলিখিত ফলাফল রিটার্ন করে:

['Alexandria Kidd', 'Darius Rowland', 'Isaac Borthwick', 'Kaley Fernandez']

কোডের প্রথম লাইনে, আমরা আমাদের কাস্টমারদের নাম সংরক্ষণকারী একটি লিস্ট ডিক্লেয়ার করি; এই লিস্টের নাম: customers। তারপর, sorted() মেথড ব্যবহার করে কাস্টমার নামের লিস্টকে অ্যাসেন্ডিং অর্ডারে সর্ট করি; এই নতুন লিস্টের নাম: sorted_customers। অবশেষে, print() ফাংশন ব্যবহার করে নতুন সর্ট করা লিস্টটি কনসোলে প্রিন্ট করি।

ডিকশনারি কে ভ্যালু অনুযায়ী সর্ট করা

মান লিন আপনার একটি ডিকশনারি আছে এবং আপনি সেটিকে কী-ভ্যালু পেয়ার অনুযায়ী সর্ট করতে চান। আপনি দুটি ফাংশন একসাথে ব্যবহার করে এটি করতে পারেন: items() এবং sorted()।

items() ফাংশন আপনাকে একটি ডিকশনারির আইটেমগুলো রিট্রিভ করতে দেয়। আমরা এই ফাংশনটি sorted() ফাংশন এবং একটি কাস্টম key প্যারামিটারের সাথে কাম্বাইন করে ডিকশনারিকে ভ্যালু অনুযায়ী সর্ট করতে পারি। নিচের দুটি উদাহরণ বিবেচনা করুন।

উদাহরণ ১: ডিসেন্ডিং অর্ডারে সর্ট

কফি শপের উদাহরণে ফিরে যাই। ধরুন, আমাদের কফি মেনুর আইটেমগুলো এবং গত মাসে প্রতিটি আইটেম কতবার অর্ডার হয়েছে তা সংরক্ষণকারী একটি ডিকশনারি আছে। আমরা গত মাসের সবচেয়ে জনপ্রিয় কফি কোনটি ছিল তা জানতে চাই, তাই অর্ডার ডিকশনারিটি ভ্যালুর ডিসেন্ডিং অর্ডারে সর্ট করার সিদ্ধান্ত নিই।

ডিকশনারির কন্টেন্ট ভ্যালু অনুযায়ী সর্ট করার জন্য আমরা নিচের প্রোগ্রামটি ব্যবহার করতে পারি:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
sort_orders = sorted(orders.items(), key=lambda x: x[1], reverse=True)
for i in sort_orders:
    print(i[0], i[1])

আমাদের কোড নিম্নলিখিত আউটপুট রিটার্ন করে:

espresso 72
latte 56
cappuccino 54
americano 48
cortado 41

আমাদের কোডে অনেক কিছু ঘটছে, তাই ধাপে ধাপে ব্রেক ডাউন করি।

কোডের শুরুতে, আমরা orders নামক একটি ডিকশনারি ডিফাইন করি যেটি কফির নামগুলো কী হিসেবে এবং বিক্রয় সংখ্যা ভ্যালু হিসেবে সংরক্ষণ করে।

তারপর, orders ডিকশনারিকে ভ্যালু অনুযায়ী সর্ট করার জন্য sorted() মেথড ব্যবহার করি। আমরা sorted() মেথডটি কীভাবে ব্যবহার করেছি তার ব্রেকডাউন:

প্যারামিটারটেক্সটবিবরণ
objectorders.items()আমাদের "orders" ডিকশনারির সকল ভ্যালুকে রেফার করে। যদি শুধু "orders" ব্যবহার করতাম, তবে আইটেমের ইন্ডেক্স পজিশন রেফারেন্স করতে হতো। কিন্তু orders.items() ব্যবহার করলে আইটেমগুলোর একটি ইটেরেবল লিস্ট তৈরি হয়।
keykey=lambda x: x[1]একটি সর্টিং মেকানিজম যা আমাদের ডিকশনারিকে ভ্যালু অনুযায়ী সর্ট করতে দেয়। এটি একটি ল্যাম্বডা ফাংশনের উদাহরণ, যার কোনো নাম নেই।
reversereverse=Trueবোঝায় যে আমরা ডেটাকে ডিসেন্ডিং অর্ডারে সর্ট করতে চাই।

অবশেষে, আমরা একটি for লুপ তৈরি করি যা sort_orders মেথডে তৈরি প্রতিটি আইটেমের মধ্য দিয়ে লুপ করে এবং সেটির কী নাম এবং ভ্যালু প্রিন্ট করে, সর্ট অর্ডার অনুযায়ী যা sort_orders ফাংশনে স্পেসিফাই করা হয়েছিল।

উদাহরণ ২: অ্যাসেন্ডিং অর্ডারে সর্ট

একইভাবে, যদি আমরা আমাদের কফি শপে সবচেয়ে কম জনপ্রিয় ড্রিংক খুঁজে বের করতে চাই, তবে উপরের মতো একই কোড ব্যবহার করতে পারি, শুধু reverse=True প্যারামিটার বাদ দিয়ে। উদাহরণ কোড:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
sort_orders = sorted(orders.items(), key=lambda x: x[1])
for i in sort_orders:
    print(i[0], i[1])

কোড রান করলে নিম্নলিখিত মানগুলো রিটার্ন হয়:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

আপনি দেখতে পাচ্ছেন, আমাদের কোড গত মাসে প্রতিটি আইটেমের অর্ডার সংখ্যা অনুযায়ী অ্যাসেন্ডিং অর্ডারে সাজানো আইটেমের একটি লিস্ট রিটার্ন করেছে।

লিস্ট কমপ্রিহেনশন

অতিরিক্তভাবে, আমরা ডিকশনারি কন্টেন্টকে ভ্যালু অনুযায়ী সর্ট করার জন্য লিস্ট কমপ্রিহেনশন ব্যবহার করতে পারি। লিস্ট কমপ্রিহেনশন পাইথনে লিস্ট তৈরির একটি সংক্ষিপ্ত টেকনিক যা জটিল সর্ট মেথড তৈরি করার সময় স্পেস বাঁচাতে পারে।

লিস্ট কমপ্রিহেনশন ব্যবহার করে আমাদের কফি অর্ডারগুলোকে অর্ডার সংখ্যা অনুযায়ী অ্যাসেন্ডিং অর্ডারে সর্ট করার কোড:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
[print(key, value) for (key, value) in sorted(orders.items(), key=lambda x: x[1])]

কোড রান করলে নিম্নলিখিত রেসপন্স রিটার্ন হয়:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

আমাদের কোডের ফলাফল আগের উদাহরণের মতোই যেখানে আমরা orders লিস্টের কন্টেন্টকে অ্যাসেন্ডিং অর্ডারে সর্ট করেছিলাম। কিন্তু এখানে আমরা sort_orders ভেরিয়েবল ডিফাইন না করে এবং সর্ট করা লিস্টের মধ্য দিয়ে ইটারেট করার জন্য আলাদা for লুপ না বানিয়ে, লিস্ট কমপ্রিহেনশন টেকনিক ব্যবহার করে একটি লিস্ট তৈরি করেছি।

উপরোক্ত লিস্ট কমপ্রিহেনশন আমাদের লিস্টের প্রতিটি আইটেমকে অ্যাসেন্ডিং অর্ডারে সর্ট করে, তারপর প্রতিটি ডিকশনারি আইটেমের কী এবং ভ্যালু কনসোলে প্রিন্ট করে।

উপসংহার

পাইথনে ডিকশনারি নিয়ে কাজ করার সময় ডিকশনারিকে ভ্যালু অনুযায়ী সর্ট করা একটি সাধারণ অপারেশন। sorted() মেথড আপনাকে আপনার প্রয়োজন অনুযায়ী ডেটার একটি সেট সর্ট করতে দেয়।

এই টিউটোরিয়ালে উদাহরণসহ আলোচনা করা হয়েছে কীভাবে sorted() মেথড ব্যবহার করে পাইথনে ডিকশনারিকে ভ্যালু অনুযায়ী সর্ট করা যায়, key এবং reverse প্যারামিটার ব্যবহার করে। এখন আপনি পাইথন প্রো처럼 ডিকশনারিকে ভ্যালু অনুযায়ী সর্ট করা শুরু করতে পারেন!

  1. পাইথনে মার্জ সর্ট (Merge Sort) ব্যাখ্যা

  2. পাইথনে ইনসারশন সর্ট প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: ইনসারশন সোর্ট অ্যালগরিদম

  4. পাইথনে ডিকশনারি কি অনুযায়ী সর্ট করার পদ্ধতি