हमारे पास टपल्स की एक सूची है। इसमें हमें शीर्ष k बारंबार तत्व ढूंढना है। यदि k 3 है तो हमें सूची के अंदर टपल्स से शीर्ष तीन तत्व ढूंढने हैं।
defaultdict के साथ
हम तत्वों को defaultdict का उपयोग करके एक शब्दकोश कंटेनर में डालते हैं। फिर केवल उन तत्वों को ढूंढते हैं जो शीर्ष k शर्त को पूरा करते हैं।
उदाहरण
import collections
from operator import itemgetter
from itertools import chain
# इनपुट सूची प्रारंभिक करना
listA = [[('Mon', 126)], [('Tue', 768)],[('Wed', 512)], [('Thu', 13)],[('Fri', 341)]]
# K सेट करें
K = 3
# दी गई सूची
print("Given list:\n",listA)
print("Check value:\n",K)
# defaultdict का उपयोग करके
dict_ = collections.defaultdict(list)
new_list = list(chain.from_iterable(listA))
for elem in new_list:
dict_[elem[0]].append(elem[1])
res = {k: sum(v) for k, v in dict_.items()}
# sorted का उपयोग करके
res = sorted(res.items(), key=itemgetter(1), reverse=True)[0:K]
# आउटपुट
print("Top 3 elements are:\n", res)
आउटपुट
Given list: [[('Mon', 126)], [('Tue', 768)], [('Wed', 512)], [('Thu', 13)], [('Fri', 341)]]
Check value: 3
Top 3 elements are: [('Tue', 768), ('Wed', 512), ('Fri', 341)]
sorted और itemgetter के साथ
इस दृष्टिकोण में हम itemgetter फ़ंक्शन का उपयोग करते हैं लेकिन इसे sorted फ़ंक्शन के भीतर 0 से K तक की रेंज बताकर लागू करते हैं।
उदाहरण
from operator import itemgetter
from itertools import chain
# इनपुट सूची प्रारंभिक करना
listA = [[('Mon', 126)], [('Tue', 768)],[('Wed', 512)], [('Thu', 13)],[('Fri', 341)]]
# K सेट करें
K = 3
# दी गई सूची
print("Given list:\n",listA)
print("Check value:\n",K)
# sorted का उपयोग करके
res = sorted(list(chain.from_iterable(listA)),
key=itemgetter(1), reverse=True)[0:K]
# आउटपुट
print("Top 3 elements are:\n", res)
आउटपुट
Given list: [[('Mon', 126)], [('Tue', 768)], [('Wed', 512)], [('Thu', 13)], [('Fri', 341)]]
Check value: 3
Top 3 elements are: [('Tue', 768), ('Wed', 512), ('Fri', 341)]