En Python, quel est le moyen le plus efficace de le faire :
my_var = some_var['my_key'] | None
c'est-à-dire assigner some_var['my_key']
a my_var
si some_var
contient 'my_key'
sinon, faites my_var
être None
.
En Python, quel est le moyen le plus efficace de le faire :
my_var = some_var['my_key'] | None
c'est-à-dire assigner some_var['my_key']
a my_var
si some_var
contient 'my_key'
sinon, faites my_var
être None
.
Python lancera un KeyError
si la clé n'existe pas dans le dictionnaire. Vous ne pouvez donc pas écrire votre code de la même manière que votre JavaScript. Cependant, si vous travaillez spécifiquement avec des dicts comme dans votre exemple, il existe une très belle fonction mydict.get('key', default)
qui tente d'obtenir la clé du dictionnaire et renvoie la valeur par défaut si la clé n'existe pas.
Si vous voulez juste être par défaut None
vous n'avez pas besoin de passer explicitement le second argument.
En fonction de ce que contient votre dict et de la fréquence à laquelle vous prévoyez d'accéder à des clés non définies, vous pouvez également être intéressé par l'utilisation de la fonction defaultdict
de la collections
paquet. Il prend une fabrique et l'utilise pour renvoyer de nouvelles valeurs à partir de la base de données de la __missing__
lorsque vous accédez à une clé qui n'a pas été explicitement définie. C'est particulièrement utile si votre dict ne doit contenir qu'un seul type.
from collections import defaultdict
foo = defaultdict(list)
bar = foo["unset"]
# bar is now a new empty list
N.B. La documentation (pour 2.7.13) affirme que si vous ne passez pas un argument à defaultdict
il reviendra None
pour les touches non réglées. Lorsque je l'ai essayé (sous 2.7.10, c'est ce que j'avais installé par hasard), cela n'a pas fonctionné et j'ai reçu une KeyError
. YMMV. Sinon, vous pouvez simplement utiliser un lambda : defaultdict(lambda: None)
Vous êtes à la recherche de la get()
méthode de dict
.
my_var = some_var.get('some_key')
El get()
retournera la valeur associée à 'some_key'
si une telle valeur existe. Si la clé n'est pas présente, alors None
sera renvoyé.
Ce qui est génial avec le .get()
est que vous pouvez définir une valeur à retourner au cas où la clé n'existe pas.
my_dict = { 1: 'one', 2: 'two' }
print my_dict.get(3, 'Undefined key')
s'imprimerait.
Undefined key
Ceci est très utile non seulement pour le débogage, mais aussi lors de l'analyse de json (d'après mon expérience, du moins), et vous devriez préférer l'utilisation de get()
sur []
autant que possible.
En supposant que some_var
est un dictionnaire, vous avez besoin de dict.get()
:
my_var = some_var.get('my_key')
Ce résultat est par défaut None
si my_key
est absent, mais vous pouvez fournir une autre valeur par défaut :
my_var = some_var.get('my_key', default)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.