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

পাইথনে ডিকশনারি দিয়ে ক্যালকুলেশন করার পদ্ধতি

সমস্যা

আপনি একটি ডিকশনারি ডেটার ওপর বিভিন্ন ক্যালকুলেশন (ন্যূনতম, সর্বোচ্চ, সর্টিং ইত্যাদি) করতে চান।

সমাধান

টেনিস খেলোয়াড় এবং তাদের গ্র্যান্ডسلام টাইটেল দিয়ে একটি ডিকশনারি তৈরি করি।

PlayerTitles = {
    'Federer': 20,
    'Nadal': 20,
    'Djokovic': 17,
    'Murray': 3,
    'Theim': 1,
    'Zverev': 0
}

১. ন্যূনতম মান বের করা (ভুল পদ্ধতি)

min(PlayerTitles)  # 'Djokovic' ফেরত দেবে (অ্যালফাবেটিক্যালি ন্যূনতম কী)

২. values() ব্যবহার করে ন্যূনতম মান


min(PlayerTitles.values())  # 0 ফেরত দেবে

৩. কীসহ ন্যূনতম/সর্বোচ্চ


min(PlayerTitles, key=lambda k: PlayerTitles[k])  # 'Zverev'
PlayerTitles[min(PlayerTitles, key=lambda k: PlayerTitles[k])]  # 0

৪. zip() ব্যবহার করে (বেস্ট প্র্যাকটিস)

zip() দিয়ে (value, key) পেয়ার বানালে তুলনা সঠিক হয়।


min_titles = min(zip(PlayerTitles.values(), PlayerTitles.keys()))
max_titles = max(zip(PlayerTitles.values(), PlayerTitles.keys()))
print(min_titles, max_titles)  # ((0, 'Zverev'), (20, 'Nadal'))

৫. সর্টিং


titles_sorted = sorted(zip(PlayerTitles.values(), PlayerTitles.keys()))
# [(0, 'Zverev'), (1, 'Theim'), (3, 'Murray'), (17, 'Djokovic'), (20, 'Federer'), (20, 'Nadal')]

৬. zip() ইটারেটর একবারই কনজিউম করা যায়

দ্বিতীয়বার কল করলে Empty sequence এরর দেবে।

৭. ডুপ্লিকেট ভ্যালুর ক্ষেত্রে কী ব্যবহার হয়

যদি একাধিক এন্ট্রি একই ভ্যালু দিয়ে থাকে, min()/max()-এ সবচেয়ে ছোট/বড় কী ফেরত দেয়। তাই ২০ টাইটেল থাকা সত্ত্বেও শুধু 'Nadal' ফেরত দিয়েছে।

  1. পাইথন পান্ডাস - DateTimeIndex-এ মিনিট ফ্রিকোয়েন্সিতে সিলিং (ceil) অপারেশন

  2. পাইথন পান্ডাস - DateTimeIndex-এ ঘন্টা ফ্রিকোয়েন্সিতে সিলিং (ceil) অপারেশন

  3. পাইথন পান্ডাস - DateTimeIndex-এ মাইক্রোসেকেন্ড ফ্রিকোয়েন্সিতে ফ্লোর (floor) অপারেশন

  4. Bokeh (Python)-এ ইমেজ নিয়ে কাজ করার পদ্ধতি