Problème :Étant donné un dictionnaire et une clé. Pouvez-vous utiliser l'opérateur ternaire pour renvoyer la clé du dictionnaire, mais uniquement si elle existe pour éviter l'erreur de clé ? Si la clé n'existe pas, une fonction "de secours" doit être exécutée.
Exemple :Disons que vous voulez faire quelque chose comme ce qui suit (pseudocode ):
var = dict["key"] if dict.has_key("key") else "fallback"
Bref récapitulatif de l'opérateur ternaire
Opérateur ternaire :L'opérateur ternaire le plus basique x if c else y
se compose de trois opérandes x
, c
, et y
. C'est une expression avec une valeur de retour. L'opérateur ternaire renvoie x
si l'expression booléenne c
évalue à True
. Sinon, si l'expression c
évalue à False
, l'opérateur ternaire renvoie l'alternative y
.
Syntaxe :Les trois opérandes sont écrits sous la forme x if c else y
qui se lit comme "retour x
si c
sinon renvoie y
“. Écrivons cela plus intuitivement comme :
<OnTrue> if <Condition> else <OnFalse>
Opérande | Description |
---|---|
L'expression de retour de l'opérateur dans le cas où la condition est évaluée à True | |
<État> | La condition qui détermine s'il faut retourner la branche |
L'expression de retour de l'opérateur si la condition est évaluée à False |
Article connexe :Pour un tutoriel complet sur l'opérateur ternaire, consultez notre article de blog détaillé.
Méthode 1 :Opérateur ternaire avec appartenance
Solution :Vous pouvez utiliser l'opérateur ternaire dict[key] if key in dict else "fallback"
pour y parvenir :
d = {'Alice': 17, 'Bob': 22} key = 'Alice' # Has key: var = d[key] if key in d else -1 print(var) # 17 # Doesn't have key: key = 'Ann' var = d[key] if key in d else -1 print(var) # -1
L'opérateur ternaire renvoie la valeur associée à la clé donnée, mais uniquement si la clé existe. S'il n'existe pas, il renvoie la valeur par défaut -1.
Méthode 2 :dict.get(clé, défaut)
Cependant, une manière plus Pythonic d'accomplir la même chose d'une manière plus lisible et plus concise est d'utiliser le dictionary.get(key, default)
fonction :
d = {'Alice': 17, 'Bob': 22} key = 'Alice' # Has key: var = d.get(key, -1) print(var) # 17 # Doesn't have key: key = 'Ann' var = d.get(key, -1) print(var) # -1
La structure externe du code est la même, mais la fonction get avec la valeur par défaut -1 remplace sémantiquement l'opérateur ternaire plus compliqué.
Essayez vous-même :
Exercice :Crée une fonction par défaut plus compliquée qui renvoie la clé dans l'ordre inverse et la passe dans le get()
fonction !