- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to sort out phrases based on their appearances in Python
Suppose, we are given two lists; 'phrases' that contain a few selected phrases and 'sentences' that contain several sentences that may or may not contain the phrases from the other list. We have to find out if the various phrases in the first list appear in the second list and sort the first list phrases based on their appearances in the second list. We return the sorted list 'phrases' as output.
So, if the input is like phrases = ['strong', 'durable', 'efficient'], sentences = ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient'], then the output will be ['efficient', 'durable', 'strong']
The phrase 'efficient' appears in sentences 0, 2, and 4. It has the most appearances, so it is at the beginning of the output. The phrases 'durable' and 'strong' appears in sentence 0 and 1, and 1 respectively. So, these phrases acquire the next positions in the output.
To solve this, we will follow these steps −
- cnt := a new map
- for each feature in phrases, do
- cnt[feature] := 0
- for each response in sentences, do
- p := a new list that contain the words of a response
- s := a new set from p
- for each i in s, do
- if i is present in cnt, then
- cnt[i] := cnt[i] + 1
- if i is present in cnt, then
- res := a new list containing pairs (k, cnt[k]) for every k in cnt
- sort the list res based on the count k
- return the list res without including the count value k
Example
Let us see the following implementation to get better understanding −
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']))
Input
['strong', 'durable', 'efficient'], ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient']
Output
['efficient', 'durable', 'strong']