Saltar al contenido principal

Boletín 208. Diccionarios

En este boletín continuaremos utilizando una de las estructuras de datos que estudiamos en la unidad 1, en este caso los diccionarios.

Contenidos

Revisa el apartado Diccionarios de la unidad.

Ejercicios

Notas
  • Para cada función, lanza las excepciones que sean necesarias.
  • Para cada función, realiza su documentación utilizando DocString.
  • Captura todas las excepciones que puedan suceder durante el transcurso del script.
  • Cuando se muestre un menú, cada opción tendrá asociada una letra. Según la letra introducida por el usuario, se realizará una operación u otra. Si se selecciona una letra que no esté en el menú se deberá mostrar por pantalla un error al usuario.
  • No debes implantar las anotaciones de tipos de las funciones. Tan solo se indica en los enunciados para documentar las funciones.

Ejercicio 1. Escribe en un script en Python una función contar_frecuencia(lista: list[str]) -> dict[str, int] que cuente la frecuencia de cada palabra en una lista de palabras. La función debe devolver un diccionario donde las claves son las palabras y los valores son las frecuencias. Aquí tienes un fragmento de código para probar dicha función:

lista_palabras = ['manzana', 'banana', 'manzana', 'naranja', 'banana', 'manzana']

print(contar_frecuencia(lista_palabras))

Ejercicio 2. Escribe en un script en Python una función valor_maximo(diccionario: dict[str, int]) -> list[str] que devuelva las claves asociadas al valor máximo en un diccionario. Devuelve una lista con todas las claves que tengan ese valor. Aquí tienes un fragmento de código para probar la función:

diccionario = {'a': 5, 'b': 3, 'c': 5, 'd': 2}

print(valor_maximo(diccionario))

Ejercicio 3. Escribe en un script en Python una función agrupar_datos_por_valor(diccionario: dict[str, list[int]]) -> dict[int, list[str]] que reciba un diccionario donde los valores son listas y devuelva un nuevo diccionario que agrupe las claves según los valores que tienen en común. Aquí tienes un fragmento de código para probar la función:

diccionario = {'a': [1, 2], 'b': [2, 3], 'c': [1, 4]}
print(agrupar_datos_por_valor(diccionario))
# Salida esperada:
# {1: ['a', 'c'], 2: ['a', 'b'], 3: ['b'], 4: ['c']}

Ejercicio 4. Crear en un script en Python una función to_str(persona: dict) -> str que reciba un diccionario y devuelva una cadena de texto con el nombre completo y la edad, como por ejemplo: Manuel López Martínez tiene 36 años.

La estructura del diccionario sería la siguiente:

persona = {
"nombre": "Manuel",
"apellidos": "López Martínez",
"edad": 36,
"ciudad": "Santiago"
}

Ejercicio 5. Crear en un script en Python una función edad_media(personas : list[dict]) -> float que recibe una lista de diccionarios que representan una persona e indica la edad media.

La estructura del diccionario sería la siguiente:

persona = {
"nombre": "Manuel",
"apellidos": "López Martínez",
"edad": 36,
"ciudad": "Santiago"
}

Ejercicio 6. Crear en un script en Python una función nota_media(estudiante: dict) -> float que reciba el diccionario y devuelva la nota media de sus materias. El número de materias no es siempre el mismo.

La estructura del diccionario sería la siguiente:

estudiante = {
"nombre": "Manuel",
"notas": {
"matemáticas": 7.5,
"historia": 6.0,
"biología": 8.2
}
}

Ejercicio 7. Crear en un script en Python una función recaudacion(factura: list[dict]) -> float que reciba una lista de diccionarios, donde cada diccionario representa una factura e indique la suma de las cantidades de todas las facturas.

La estructura del diccionario sería la siguiente:

factura = {
"producto": "Libro",
"precio_por_unidad": 15.0,
"unidades": 2
}