Skip to main content

Get the list of names which satisfy the condition in dictionary from given list

I have a dictionary in which there are three conditions startwith, contains and endwith given below,

dict1 = {'startwith':"Raja, Bina", 'contains':"Tata", "endwith":""}

If user give value in dictionary with comma that means OR i.e "Raja, Bina" = Raja or Bina

now I have a list of name given below

list_of_names = ["Raja Molli Jira", "Bina Tata Birla", "Fira Kiya Too"]

now with above dictionary and list I have to find the name from list which satisfy the conditions given in dictionary, from above example result should be like (need result in list)

required_list = ["Raja Molli Jira", "Bina Tata Birla"]

the name in required_list satisfy the condition given in dictionary which are startwith and contains.

Example 2

if dict1 and list_of_names are :

dict1 = {'startwith':"", 'contains':"Tata, Gola", "endwith":"Too"}
list_of_names = ["Raja Molli Jira", "Bina Tata Birla", "Fira Kiya Too"]

the required_list list will be :

required_list = ["Bina Tata Birla", "Fira Kiya Too"]

the name in required_list satisfy the condition given in dictionary which are contains and endwith

Currently using code

I am able to handle problem if user give single value (without comma) with below code

dict1 = {'startwith':"Raja,Bina", 'contains':"Tata", "endwith":""}
list_of_names = ["Raja Molli Jira", "Bina Tata Birla", 'Fira Kiya Too']
required_list = []
fileopp  = list(dict1.values())

for i in list_of_files:
   #startswith
   if  ((fileopp[0] != "") and (fileopp[1] == "") and (fileopp[2] == "")):
        if i.startswith(fileopp[0]):
               listfilename.append(i)
   #containswith
  elif ((fileopp[0] == "") and (fileopp[1] != '') and (fileopp[2] == "")):
        if i.__contains__(fileopp[1]):
               listfilename.append(i)
   #endiswith
   elif ((fileopp[0] == "") and (fileopp[1] == '') and (fileopp[2] != "")):
        if i.endswith(fileopp[2]):
            listfilename.append(i)
   #startswith and contains with
   elif ((fileopp[0] != "") and (fileopp[1] != "") and (fileopp[2] == "")):
        if (i.startswith(fileopp[0])) and i.__contains__(fileopp[1]):
            listfilename.append(i)
   #startswith and endswith
   elif ((fileopp[0] != "") and (fileopp[1] == "") and (fileopp[2] != "")):
        if (i.startswith(fileopp[0])) and i.endswith(fileopp[2]):
            listfilename.append(i)
   #containswith and endswith
   elif ((fileopp[0] == "") and (fileopp[1] != "") and (fileopp[2] != "")):
        if (i.__contains__(fileopp[1])) and i.endswith(fileopp[2]):
            listfilename.append(i)

Question

If user give Value with comma (Raja,Bina) then above code fails to give result.

Giving the conditions and required result what I want,

First

dict1 = {'startwith':"Fira", 'contains':"", "endwith":"Birla"}
list_of_names = ["Raja Molli Jira", "Bina Tata Birla", "Fira Kiya Too"]

required_list = ["Bina Tata Birla", "Fira Kiya Too"]

Second

dict1 = {'startwith':"Fira, Raja", 'contains':"", "endwith":""}
list_of_names = ["Raja Molli Jira", "Bina Tata Birla", "Fira Kiya Too"]

required_list = ["Raja Molli Jira", "Fira Kiya Too"]


source https://stackoverflow.com/questions/75127926/get-the-list-of-names-which-satisfy-the-condition-in-dictionary-from-given-list

Comments

Popular posts from this blog

ValueError: X has 10 features, but LinearRegression is expecting 1 features as input

So, I am trying to predict the model but its throwing error like it has 10 features but it expacts only 1. So I am confused can anyone help me with it? more importantly its not working for me when my friend runs it. It works perfectly fine dose anyone know the reason about it? cv = KFold(n_splits = 10) all_loss = [] for i in range(9): # 1st for loop over polynomial orders poly_order = i X_train = make_polynomial(x, poly_order) loss_at_order = [] # initiate a set to collect loss for CV for train_index, test_index in cv.split(X_train): print('TRAIN:', train_index, 'TEST:', test_index) X_train_cv, X_test_cv = X_train[train_index], X_test[test_index] t_train_cv, t_test_cv = t[train_index], t[test_index] reg.fit(X_train_cv, t_train_cv) loss_at_order.append(np.mean((t_test_cv - reg.predict(X_test_cv))**2)) # collect loss at fold all_loss.append(np.mean(loss_at_order)) # collect loss at order plt.plot(np.log(al...

Sorting large arrays of big numeric stings

I was solving bigSorting() problem from hackerrank: Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array's elements in non-decreasing, or ascending order of their integer values and return the sorted array. I know it works as follows: def bigSorting(unsorted): return sorted(unsorted, key=int) But I didnt guess this approach earlier. Initially I tried below: def bigSorting(unsorted): int_unsorted = [int(i) for i in unsorted] int_sorted = sorted(int_unsorted) return [str(i) for i in int_sorted] However, for some of the test cases, it was showing time limit exceeded. Why is it so? PS: I dont know exactly what those test cases were as hacker rank does not reveal all test cases. source https://stackoverflow.com/questions/73007397/sorting-large-arrays-of-big-numeric-stings

How to load Javascript with imported modules?

I am trying to import modules from tensorflowjs, and below is my code. test.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title </head> <body> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script> <script type="module" src="./test.js"></script> </body> </html> test.js import * as tf from "./node_modules/@tensorflow/tfjs"; import {loadGraphModel} from "./node_modules/@tensorflow/tfjs-converter"; const MODEL_URL = './model.json'; const model = await loadGraphModel(MODEL_URL); const cat = document.getElementById('cat'); model.execute(tf.browser.fromPixels(cat)); Besides, I run the server using python -m http.server in my command prompt(Windows 10), and this is the error prompt in the console log of my browser: Failed to loa...