# Así defino un diccionario
libro = {"titulo": "El Quijote", "autor": "Cervantes", "precio": 20}
# así accedo al valor de una clave
print(libro["precio"])
# Así recorro todas las claves
for clave in libro:
print(clave)
# los valores de esa clave
print(libro[clave])
# Puedo tener una lista de diccionarios
biblioteca = [
{"titulo": "El Quijote", "autor": "Cervantes", "precio": 20},
{"titulo": "Las olas", "autor": "Virginia Woolf", "precio": 17},
{"titulo": "Los detectives salvajes", "autor": "Roberto Bolaño", "precio": 23},
{"titulo": "Tom va a la escuela", "autor": "Rick Sánchez", "precio": 10}
]
# para acceder a un elemento primero accedo a la posición de la lista
print(biblioteca[1]) # {"titulo": "Las olas", "autor": "Virginia Woolf", "precio": 17},
print(biblioteca[1]["autor"]) # "Virginia Woolf"
# Recorrer esa lista de diccionarios
for libro in biblioteca:
print(libro)
# Quiero ver todos los autores de la biblioteca
for libro in biblioteca:
print(libro["autor"])
# Puedo hacer cálculos por ejemplo media de precios
suma = 0
for libro in biblioteca:
suma += libro["precio"]
print(suma / len(biblioteca))
proyecto = [
{"nombre": "Análisis", "horas": 10, "precio": 60},
{"nombre": "Desarrollo", "horas": 50, "precio": 50},
{"nombre": "Implementación", "horas": 5, "precio": 70},
{"nombre": "Pruebas", "horas": 15, "precio": 40},
]
# función que me calcule el total de importe del proyecto
def totalProyecto(proyecto):
total = 0
# recorro las tareas
for tarea in proyecto:
# Accedo a las propiedades que me interesan. En este caso horas y precio
total += tarea["horas"] * tarea["precio"]
return total
print(totalProyecto(proyecto))
# listas que tienen diccionarios que tienen listas de diccionarios
biblioteca = [
{"titulo": "El Quijote",
"autor": {"nombre": "Miguel de Cervantes", "pais": "España"},
"ediciones": [
{"editorial": "Alianza", "precio": 15},
{"editorial": "Cátedra", "precio": 20}
]
},
{"titulo": "2666",
"autor": {"nombre": "Roberto Bolaño", "pais": "Chile"},
"ediciones": [
{"editorial": "Anagrama", "precio": 30},
{"editorial": "Alfaguara", "precio": 28}
]
}
]
# Al precio de la primera edición de mi primer libro
print(biblioteca[0]["ediciones"][0]["precio"]) # 15
# Al precio de la segunda edición de mi segundo libro
print(biblioteca[1]["ediciones"][1]["precio"]) # 28
# Si quiero el total de precios de toda la biblioteca
# Tengo que recorrer los libros
# después recorrer las ediciones
# sumar los precios
def sumaPreciosBiblioteca(biblioteca):
suma=0
for libro in biblioteca:
for edicion in libro["ediciones"]:
suma+=edicion["precio"]
return suma
print(sumaPreciosBiblioteca(biblioteca))