Parfois, nous devrions peut-être vérifier l'existence d'une clé dans un dictionnaire et faire quelque chose si la valeur correspondante existe.
Habituellement, je procède de cette manière: p>
try: value = my_dict[key] # Do something except KeyError: pass
3 Réponses :
Si les situations avec des valeurs manquantes sont vraiment exceptionnelles, la gestion des exceptions est appropriée: Si les touches manquantes et présentes doivent être manipulées, votre première option est utile. P > if key in my_dict:
value = my_dict[key]
# Do something
Pourriez-vous élaborer lors de la dernière remarque? Je dirais valeur = my_dict.get (touche "") code> est assez facile à lire et à moins de code.
@Bartfriederichs En général, vous ne pouvez pas être sûr que votre valeur par défaut n'existe pas dans le dictionnaire afin que vous puissiez être potentiellement incapable de distinguer entre la clé valide et la clé invalide. Ensuite, vous ne pouvez pas traiter les clés non valides différemment selon les besoins.
Comme mentionné plusieurs fois, la manipulation des exceptions est la voie à suivre. Toutefois, si vous souhaitez utiliser obtenir code> et
Aucun code> est une valeur possible, créez un nouvel objet pour agir comme Sentinel "non trouvé". (Depuis que vous venez de créer l'objet, il est impossible que ce soit une entrée valide dans votre
dict code>. Eh bien, pas impossible, mais vous devrez vraiment sortir de votre chemin pour l'ajouter à le
dict code>.)
if (dict.get('key') is not None) and ('key' in dict): var = dict['key'] Second portion of if-statement may not be totally necessary but I have used this format in my own code and it does the job.
Dans Python
ESSAYER / SAUF CODE> Clostly convient au paradigme "Demander le pardon, pas la permission". Sinon, vous devez utiliser
.get () code> avec une valeur par défaut qui jamais i> apparaît comme une valeur valide pour votre dictionnaire. Quelque chose comme
float ('- INF') code> peut-être?
Vous pouvez essayer d'utiliser une valeur par défaut qui est peu susceptible d'être présent dans vos données, comme un objet de la classe
ellipsis code>, par exemple.
my_dict.get (clé, ...) code>.
En Python,
Essayez code> /
. Le style associé à cette approche a même son propre nom .sauf code> est le moyen (correct, accepté et normal ) faire cela
TRY..EXCEPT CODE> est probablement la meilleure façon la plus pythonique de le faire (sauf si vous attendez beaucoup de recherches échouées, auquel cas
si code> serait préférable).
Dans de nombreuses langues, la culture est que les exceptions ne sont que pour les erreurs, pas le flux de contrôle normal. Python rejette explicitement cela. Même la boucle
pour code> est implémentée en utilisant des exceptions; Il est tout à fait normal d'attraper des exceptions dans des situations de non-erreur en Python.