मान लीजिए हमें दो सूचियां दी गई हैं; 'phrases' जिसमें कुछ चुनिंदा वाक्यांश हैं और 'sentences' जिसमें कई वाक्य हैं जिनमें दूसरी सूची के वाक्यांश हो भी सकते हैं और नहीं भी। हमें यह पता लगाना है कि पहली सूची के विभिन्न वाक्यांश दूसरी सूची में प्रकट होते हैं या नहीं और पहली सूची के वाक्यांशों को दूसरी सूची में उनके प्रकट होने के आधार पर सॉर्ट करना है। हम सॉर्ट की गई सूची 'phrases' को आउटपुट के रूप में वापस करते हैं।
उदाहरण के लिए, यदि इनपुट phrases = ['strong', 'durable', 'efficient'], sentences = ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient'] है, तो आउटपुट ['efficient', 'durable', 'strong'] होगा।
वाक्यांश 'efficient' वाक्यों 0, 2, और 3 में प्रकट होता है। इसके सबसे अधिक प्रकट होने हैं, इसलिए यह आउटपुट की शुरुआत में है। वाक्यांश 'durable' और 'strong' क्रमशः वाक्य 0 और 1, और 1 में प्रकट होते हैं। तो, ये वाक्यांश आउटपुट में अगले स्थान प्राप्त करते हैं।
हल करने के चरण
cnt :=एक नया मैपphrasesमें प्रत्येकfeatureके लिए:cnt[feature] := 0
sentencesमें प्रत्येकresponseके लिए:p := response.split()से शब्दों की नई सूचीs := set(p)से नया सेटsमें प्रत्येकiके लिए:- यदि
icntमें मौजूद है, तोcnt[i] := cnt[i] + 1
- यदि
res :=प्रत्येकkके लिए जोड़े(k, cnt[k])वाली नई सूचीresसूची को काउंटkके आधार पर सॉर्ट करें।kकाउंट मान को शामिल किए बिनाresसूची वापस करें।
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(phrases, sentences):
cnt = {}
for feature in phrases:
cnt[feature] = 0
for response in sentences:
p = response.split()
s = set(p)
for i in s:
if i in cnt:
cnt[i] += 1
res = [[k, cnt[k]] for k in cnt]
res.sort(key=lambda x: (-x[1], phrases.index(x[0])))
return [i[0] for i in res]
print(solve(['strong', 'durable', 'efficient'], ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient']))
इनपुट
['strong', 'durable', 'efficient'], ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient']
आउटपुट
['efficient', 'durable', 'strong']