Devuelve un valor predeterminado si una clave de diccionario no está disponible
Necesito una forma de obtener un valor de diccionario si su clave existe, o simplemente devolverlo None
, si no es así.
Sin embargo, Python genera una KeyError
excepción si busca una clave que no existe. Sé que puedo buscar la clave, pero estoy buscando algo más explícito. ¿ Hay alguna manera de regresar None
si la clave no existe?
Ver también: ¿Por qué dict.get(key) en lugar de dict[key]?
Puedes usardict.get()
value = d.get(key)
que volverá None
si key is not in d
. También puede proporcionar un valor predeterminado diferente que se devolverá en lugar de None
:
value = d.get(key, "empty")
Extrañar más. Está integrado en el idioma.
>>> ayuda(dictar) Ayuda sobre dictado de clases en módulos incorporados: dictado de clase (objeto) | dict() -> nuevo diccionario vacío | dict(mapping) -> nuevo diccionario inicializado a partir de un objeto de mapeo | pares (clave, valor) ... | | conseguir(...) | D.get(k[,d]) -> D[k] si k en D, en caso contrario d. d tiene el valor predeterminado Ninguno. | ...
Deberías usar el get()
método de la dict
clase.
d = {}
r = d.get('missing_key', None)
Esto resultará en r == None
. Si la clave no se encuentra en el diccionario, la función get devuelve el segundo argumento.
Usardict.get
Devuelve el valor de la clave si la clave está en el diccionario; en caso contrario, es el valor predeterminado. Si no se proporciona el valor predeterminado, el valor predeterminado es Ninguno, de modo que este método nunca genera un KeyError.
Normalmente uso un defaultdict para situaciones como esta. Proporciona un método de fábrica que no acepta argumentos y crea un valor cuando ve una nueva clave. Es más útil cuando desea devolver algo como una lista vacía en claves nuevas ( consulte los ejemplos ).
from collections import defaultdict
d = defaultdict(lambda: None)
print d['new_key'] # prints 'None'