Python >> Tutoriel Python >  >> Python

Dictionnaire ternaire Python

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 ou .
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 !


Post précédent
Prochain article