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

পাইথন: ডিকশনারি লিস্টে নির্দিষ্ট কির প্রতিটি ভ্যালুর আবির্ভাব গণনা করা

ডিকশনারির লিস্টে নির্দিষ্ট কি (key) এর ভ্যালুগুলো কতবার আবির্ভূত হয়েছে তা গণনা করার জন্য itertools.groupby এবং ল্যাম্বডা ফাংশন ব্যবহার করা হয়। দ্রষ্টব্য: groupby শুধু কনসেকিউটিভ (একে după একে) গ্রুপে কাজ করে, তাই প্রisb সর্ট করতে হয়।

উদাহরণ


from itertools import groupby

my_list = [
    {'pyt': 13, 'fun': 44},
    {'pyt': 63, 'best': 15},
    {'pyt': 24, 'fun': 34},
    {'pyt': 47, 'best': 64}
]

key = 'pyt'
print("ডিকশনারি লিস্ট:", my_list)
print("কি:", key)

# groupby-এর জন্য সর্ট করা জরুরি
sorted_list = sorted(my_list, key=lambda d: d[key])

# গ্রুপবাই করে কাউন্ট
result = [{k: len(list(g))} for k, g in groupby(sorted_list, key=lambda d: d[key])]

print("ফলাফল:", result)

আউটপুট


ডিকশনারি লিস্ট: [{'pyt': 13, 'fun': 44}, {'pyt': 63, 'best': 15}, {'pyt': 24, 'fun': 34}, {'pyt': 47, 'best': 64}]
কি: pyt
ফলাফল: [{13: 1}, {63: 1}, {24: 1}, {47: 1}]

এখানে সব ভ্যালু ইউনিক, তাই সবই ১ বার।

Counter ব্যবহার (সরল ও সঠিক)


from collections import Counter

values = [d[key] for d in my_list]
counts = Counter(values)

print("ভ্যালু কাউন্ট:", dict(counts))
# {13: 1, 63: 1, 24: 1, 47: 1}

# ডিকশনারি লিস্ট ফরম্যাটে
result = [{v: c} for v, c in counts.items()]
print(result)

দ্রষ্টব্য: groupby vs Counter

পদ্ধতিপ্রয়োজনীয় সর্টকনসেকিউটিভ মাত্রসব দিয়ে কাউন্ট
itertools.groupbyহ্যাঁহ্যাঁনা
collections.Counterনানাহ্যাঁ

সুপারিশ: সাধারণ কাউন্টের জন্য Counter ব্যবহার করুন। groupby তখন কাজে লাগে যখন কনসেকিউটিভ রান (run-length encoding) বুঝতে হয়।

Pandas value_counts()


import pandas as pd
df = pd.DataFrame(my_list)
print(df[key].value_counts().to_dict())
  1. পাইথন প্রোগ্রাম: মডুলার এক্সপোনেনশিয়েশন (Modular Exponentiation)

  2. পাইথনে এক্সপোনেনশিয়াল ভ্যালু (Exponential Value) বের করা

  3. Python Dictionary-এ একটি কী দিয়ে ভ্যালু প্রিন্ট করা

  4. পাইথন ডিকশনারি থেকে একটি দিয়ো কী-এর ভ্যালু কীভাবে পাবেন?