Home > Blockchain >  How to find a specific python dictionary key with a string
How to find a specific python dictionary key with a string

Time:10-30

How can I match the key name from general_key_array with all_keys dictionary to get "aws." as substring? I added the startswith section but it returns True all the time.

general_keys = dict()
all_keys = {'activity': 'ins','install': 'all','aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'} #read from file
general_key_array = ['install', 'aws.']
    
for key in general_key_array:
    if key.startswith(key) in all_keys:
        general_keys[key] = dict(filter(lambda item: key in item[0], all_keys.items()))

CodePudding user response:

You can do it all with a single dictionary comprehension.

general_keys = {key: value for key, value in all_keys.items() 
                if any(key.startswith(gk) for gk in general_key_array)}

CodePudding user response:

key.startswith(key) is always equal to True because it's tautological that a string starts with itself.

you can add a for loop with the keys of all_keys after the first one you wrote to solve the problem like this

general_keys = dict()
all_keys = {'activity': 'ins','install': 'all','aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'} 
general_key_array = ['install', 'aws.']
    
for key in general_key_array:
    for s in all_keys :
        if s.startswith(key): # s is part of all_keys, no tautology here
            general_keys[key] = dict(filter(lambda item: key in item[0], all_keys.items()))
  • Related