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

পাইথনে টাপল লিস্ট থেকে টপ K ফ্রিকোয়েন্ট এলিমেন্ট বের করা (Find top K frequent elements)


সমস্যা বিবরণ

টাপলের লিস্ট দেওয়া থাকে। টপ K ফ্রিকোয়েন্ট এলিমেন্ট (ভ্যালু অনুযায়ী) বের করুন।

উদাহরণ

listA = [[('Mon',126)],[('Tue',768)],[('Wed',512)],[('Thu',13)],[('Fri',341)]], K=3 → আউটপুট: [('Tue',768),('Wed',512),('Fri',341)]

পদ্ধতি ১: defaultdict + sorted

import collections
from operator import itemgetter
from itertools import chain

listA = [[('Mon',126)],[('Tue',768)],[('Wed',512)],[('Thu',13)],[('Fri',341)]]
K = 3

new_list = list(chain.from_iterable(listA))
dict_ = collections.defaultdict(list)
for k, v in new_list:
    dict_[k].append(v)
res = {k: sum(v) for k, v in dict_.items()}
res = sorted(res.items(), key=itemgetter(1), reverse=True)[:K]
print(res)  # [('Tue', 768), ('Wed', 512), ('Fri', 341)]

পদ্ধতি ২: chain + sorted + itemgetter (সরল)

from operator import itemgetter
from itertools import chain

listA = [[('Mon',126)],[('Tue',768)],[('Wed',512)],[('Thu',13)],[('Fri',341)]]
K = 3
res = sorted(chain.from_iterable(listA), key=itemgetter(1), reverse=True)[:K]
print(res)  # [('Tue', 768), ('Wed', 512), ('Fri', 341)]

ব্যাখ্যা

  • পদ্ধতি ১: একই কীवाले ভ্যালু সম করে (aggregate) টপ K বের করে।
  • পদ্ধতি ২: সরাসরি টাপলগুলো সর্ট করে টপ K নেয় (এগিগ্রেট করে না)।
  • প্রয়োজন অনুযায়ী পদ্ধতি বেছে নিন।

আউটপুট

[('Tue', 768), ('Wed', 512), ('Fri', 341)]
  1. পাইথনে ইন্ডেক্স ব্যবহার করে লিস্টের এলিমেন্ট বের করুন

  2. পাইথনে Top K Frequent Elements (সর্বাধিক ফ্রিকোয়েন্ট K সংখ্যক উপাদান)

  3. পাইথনে লিস্টের আকার বের করা

  4. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা