Maison >développement back-end >Tutoriel Python >Comment gérer « KeyError » lors de l'exécution de recherches inversées dans les dictionnaires Python ?
Recherches inversées dans les dictionnaires Python : récupération des clés par valeurs
Bien que les dictionnaires Python fournissent un moyen efficace de mapper les clés à leurs valeurs correspondantes, il existe Il peut y avoir des situations dans lesquelles vous devez effectuer des recherches inversées. Cela peut s'avérer utile dans les scénarios dans lesquels vous avez une valeur et devez trouver la clé associée.
Question :
Supposons que vous disposiez d'un dictionnaire qui mappe les noms aux âges. . Votre tâche consiste à créer une fonction qui prend un âge en entrée et renvoie le nom correspondant. Cependant, votre script rencontre une erreur KeyError et vous demandez de l'aide pour modifier le code afin de gérer ce cas.
Code :
dictionary = {'george': 16, 'amber': 19} search_age = raw_input("Provide age") for age in dictionary.values(): if age == search_age: name = dictionary[age] print name
Solution :
Le code fourni tente de parcourir les valeurs du dictionnaire et de les comparer avec l'âge d'entrée. Si une correspondance est trouvée, le code tente de récupérer la clé correspondante dans le dictionnaire en utilisant le dictionnaire[age], c'est là que se produit l'erreur KeyError.
Pour effectuer des recherches inversées en Python, nous pouvons utiliser deux méthodes :
Méthode 1 :
mydict = {'george': 16, 'amber': 19} print mydict.keys()[mydict.values().index(16)] # Prints george
Cette approche consiste à obtenir une liste de toutes les clés et valeurs en utilisant mydict.keys() et mydict.values(), respectivement. Nous utilisons ensuite index() sur la liste des valeurs pour trouver la position de l'âge d'entrée et récupérer la clé à cette position.
Méthode 2 (Python 3.x) :
mydict = {'george': 16, 'amber': 19} print(list(mydict.keys())[list(mydict.values()).index(16)]) # Prints george
Semblable à la première méthode, cette approche consiste à convertir des clés et des valeurs en listes. Cependant, il exploite la syntaxe Python 3.x pour simplifier le processus d'indexation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!