0
votes

Vérifiez si la chaîne est dans les valeurs de dictionnaire, qui sont dans la liste

Qu'est-ce que j'essaie de faire est de vérifier si une entrée de chaîne est dans le dictionnaire, quelles valeurs sont dans la liste: xxx

C'est le dictionnaire. Je souhaite créer une fonction pour chaque clé: paire de valeur: xxx

la fonction suivante pour être pour la clé - "socio" et ainsi de suite. Le problème est que cette fonction renvoie toujours la déclaration d'autre. Lorsque je change de «mobile_panel» avec la valeur, je reçois le résultat correct, mais cela ne fonctionne que pour la première clé: paire de valeur. Comment puis-je sélectionner les différentes clés et leurs valeurs? Il me manque quelque chose, mais je ne peux pas le comprendre.


3 commentaires

Pourriez-vous poster une sortie attendue?


@Vlemaistre Lorsque l'entrée est "App", la sortie sera la chaîne, si son "APPP '- App_not_valid


Vérifiez ma réponse, devriez vous donner cette sortie exacte.


4 Réponses :


0
votes

Vérifiez ceci:

def mob_panel_in_list(string):
    for key, value in data_dict.items():
        if string in key,value:
            return string
        else:
            return string + '_not_valid'


0 commentaires

0
votes

Si vous souhaitez le faire fonctionner pour une seule clé à la fois, et que les valeurs sont toujours des listes, vous pouvez le faire:

def value_in_dict_list(string, mydict):
    out_dict = {}
    for k, val in mydict.items():
        if string in val:
            out_dict[k] = string
        else:
            out_dict[k] = string + '_not_valid'
    return out_dict

value_in_dict_list('APPP', data_dict)
{'socio': 'APPP_not_valid', 
 'mobile_panel': 'APPP_not_valid'}


0 commentaires

1
votes

Étant donné que vous souhaitez créer des fonctions distinctes pour chaque touche du DAT_DICT ..

def mob_panel_in_list(panel):
   return panel if panel in data_dict['mobile_panel'] else panel+'_not_valid'


0 commentaires

0
votes

Essayez ceci:

>>> data_dict = {'mobile_panel': ["APP", "DTRAFFIC", "DSCHANGE", "SEARCH", "URL", "HTTP", "ALL"],
                 'socio': ["-20.000 inh", "20.000-50.000 inh", "50.000-100.000 inh", "100.000 inh or more"]}
>>> is_string_in_dict('APP', data_dict, 'mobile_panel')  
# 'APP' is in 'mobile_panel' list => return 'APP'
APP
>>> is_string_in_dict('APPP', data_dict, 'mobile_panel')  
# 'APPP' is not in 'mobile_panel' list => return 'APPP_not_valid'
APPP_not_valid
>>> is_string_in_dict('APP', data_dict, 'socio')  
# 'APP' is not in 'socio' list => return 'APPP_not_valid'
APP_not_valid
>>> is_string_in_dict('APP', data_dict, 'missing_key')  
# 'missing_key' is not a valid key => return 'APP_not_valid'
APP_not_valid


0 commentaires