Python lanzará una KeyError
si la clave no existe en el diccionario, por lo que no puede escribir su código de la misma manera que su JavaScript. Sin embargo, si está operando específicamente con dicts como en su ejemplo, hay una muy buena función mydict.get('key', default)
que intenta obtener la clave del diccionario y devuelve el valor predeterminado si la clave no existe.
Si solo quiere que el valor predeterminado sea None
, no necesita pasar explícitamente el segundo argumento.
Según lo que contenga su dict y la frecuencia con la que espera acceder a las claves no configuradas, también puede interesarle usar el defaultdict
del paquete collections
. Esto toma una fábrica y la usa para devolver nuevos valores del método mágico __missing__
cada vez que accede a una clave que de otro modo no se ha establecido explícitamente. Es particularmente útil si se espera que su dict contenga solo un tipo.
from collections import defaultdict
foo = defaultdict(list)
bar = foo["unset"]
# bar is now a new empty list
N.B. los documentos (para 2.7.13) afirman que si no pasa un argumento al defaultdict
, devolverá None
para las claves no configuradas. Cuando lo probé (el 2.7.10, es justo lo que sucedió que tuve instalado), eso no funcionó y recibí un KeyError
. YMMV.Alternativamente, puede utilizar una lambda: defaultdict(lambda: None)
¿Qué quiere decir con "si existe"? ¿Puede el nombre 'some_var' ser indefinido en algunos casos? –
Acabo de editarlo - para aclararlo - Estoy tratando de verificar la existencia de una clave en un diccionario esencialmente –
Apuesto a que esto ya se ha preguntado ... –