PyQuiz 25 – dict.get() por defecto en Python
El reto
datos = {'nombre': 'Ana'}
resultado = datos.get('edad', 25)
print(resultado)
¿Cuál es el resultado?
- a) None
- b) 25
- c) KeyError
Piensa tu respuesta antes de seguir leyendo…
Concepto: dict.get() por defecto
El método dict.get(clave, valor_por_defecto) permite acceder a un valor de un diccionario de forma segura. Si la clave existe, devuelve su valor. Si no existe, devuelve el valor_por_defecto indicado, en lugar de lanzar un KeyError.
Si no se proporciona el segundo argumento, get() devuelve None cuando la clave no existe. Esto lo diferencia del acceso con corchetes diccionario['clave'], que lanza una excepción si la clave no está.
Este método es ideal para acceder a diccionarios con claves opcionales, como configuraciones o respuestas de APIs, sin necesidad de rodear el acceso con un bloque try/except.
Paso a paso
datos = {'nombre': 'Ana'}— diccionario con una sola clave,'nombre'. No existe la clave'edad'.datos.get('edad', 25)— Python busca'edad'en el diccionario. No la encuentra.- Como la clave no existe,
get()devuelve el valor por defecto:25. resultado = 25— la variable almacena el valor por defecto.print(resultado)— se imprime25. No se lanza ninguna excepción.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: B) 25
'edad' no existe en el diccionario. .get() devuelve el valor por defecto: 25.
Sabías que…
Existen varias formas de manejar claves inexistentes en diccionarios, cada una con sus casos de uso:
datos = {'nombre': 'Ana'}
# get() sin default -> None
print(datos.get('edad')) # None
# get() con default
print(datos.get('edad', 25)) # 25
# Acceso directo -> KeyError
try:
print(datos['edad']) # KeyError!
except KeyError:
print('Clave no encontrada')
# setdefault: devuelve el valor Y lo inserta si no existe
datos.setdefault('edad', 25)
print(datos) # {'nombre': 'Ana', 'edad': 25}
# defaultdict de collections
from collections import defaultdict
contador = defaultdict(int) # int() devuelve 0 por defecto
contador['visitas'] += 1
print(contador['visitas']) # 1
print(contador['nueva']) # 0 (no KeyError)
Prueba tú mismo
Dado config = {'debug': True}, ¿qué devuelve config.get('timeout', 30)? ¿Y config.get('debug', False)?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Diccionarios en Python
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 35+ lecciones, código revisado, ejercicios y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
35+ lecciones · Proyecto real · Acceso de por vida · 14 días de garantía
