Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

python conditional dictionary and replace

I have a conditional dict, when a string is recognized thorugh a function, it returns the key of that dictionary.

The dict is "myDict", which will be use together with the list "lookup", find a word that exists in it, and return the dictionary key for that list, adding it to the end of that name.

My code:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

  myDict = {'NESTLE':
                  ['NESFIT', 'NESCAU', 'DOIS FRADES', 'MOCA', 'KIT KAT', 'NESQUIK', 'ALPINO', 'LEITE CONDENSADO MOCA'
                  'CHAMYTO', 'NINHO', 'MOLICO', 'CHAMBINHO', 'CHANDELLE', 'BONO', 'PASSATEMPO', 'KITKAT', 'CLASSIC'],
                'all_names': ['rodis', 'Stone', 'abx']}
    
    def search(myDict, lookup):
        for key, value in myDict.items():
            for v in value:
                if lookup in v:
                    return key
    
    lookup = ['NESCAU', 'Confeito coberto de chocolate ao leite NESCAU Ball', 'NESCAU EM PO', 'Stone']
    lookup2 = [str(x).split(' ') for x in lookup]
    
    for x in range(0, len(lookup)):
        finder = search(myDict, lookup[x])
        print(finder)

NESTLE
None
None
all_names

I arrived here, but was unable to do this output with the dictinary’s key at the end of the list, and it is not searching for all words that contains in it, thus I wanted this output:

output_lookup = ['NESCAU NESTLE', 'Confeito coberto de chocolate ao leite NESCAU Ball NESTLE', 'NESCAU EM PO NESTLE', 'Stone all_names']

>Solution :

I changed your code.

I added a split of the lookup string.


myDict = {'NESTLE':
                  ['NESFIT', 'NESCAU', 'DOIS FRADES', 'MOCA', 'KIT KAT', 'NESQUIK', 'ALPINO', 'LEITE CONDENSADO MOCA'
                  'CHAMYTO', 'NINHO', 'MOLICO', 'CHAMBINHO', 'CHANDELLE', 'BONO', 'PASSATEMPO', 'KITKAT', 'CLASSIC'],
                'all_names': ['rodis', 'Stone', 'abx']}

def search(myDict, lookup):
        for key, value in myDict.items():
            for v in value:
#                if lookup in v:
                if v in lookup.split(' '):
                    return key

lookup = ['NESCAU', 'Confeito coberto de chocolate ao leite NESCAU Ball', 'NESCAU EM PO', 'Stone']
lookup2 = [str(x).split(' ') for x in lookup]

for x in lookup:
        finder = search(myDict, x)
        print(f"{x} {finder}")

Here the output that i got

NESCAU NESTLE
Confeito coberto de chocolate ao leite NESCAU Ball NESTLE
NESCAU EM PO NESTLE
Stone all_names
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading