Diccionarios

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Informática ET241/EM241/IC241/IN241/IM204
Libro: Diccionarios
Imprimido por: Invitado
Día: miércoles, 3 de julio de 2024, 04:54

1. Contenidos

Introducción al tipo de dato Diccionarios, conceptos, sintaxis y usos.

2. Introducción

Diccionarios

Los diccionarios son un tipo de Dato de Python y contienen un par de elementos: clave y valor.

Como valor se puede tener distintos tipos de datos como enteros, cadenas, listas, valores lógicos, etc.

La clave o key  NO PUEDE REPETIRSE. Es única. Identifica a cada elemento del diccionario.

Se  llama clave y no índice, para hacer una diferencia con Listas.

En Listas los índices son valores numéricos. En los Diccionarios las claves pueden NO ser numéricas.

La clave se utiliza para acceder al valor. La clave es un dato inmutable. 

LA CLAVE EN UN DICCIONARIO:

  • NO PUEDE REPETIRSE.
  • NO SE PUEDE MODIFICAR.

El ORDEN en un diccionario es algo que hay que tener cuidado, por que no tiene indices como las listas, tiene claves :-)


Los dos puntos separa el par clave-valor, la coma cada par clave-valor  y todo el conjunto de elementos del diccionario se encierra entre llaves.

Ejemplos:

Figura 1


Un Diccionario puede definirse como vacío para luego cargar valores dentro del programa.

Para definir un diccionario vacío hay dos opciones:

Figura 2

Otros ejemplos de diccionario:

Figura3

1. Elija un equipo de algún deporte y cree un Diccionario, asignando como clave el nro. de camiseta y como valor el apellido del jugador. ¿Pude crear y mostrar el Diccionario?

2. Elija un equipo de algún deporte y cree un Diccionario  asignando como clave el apellido del jugador y como valor el nro. de camiseta. ¿Pude crear y mostrar el Diccionario?

3. ¿Cuántas formas de crear un diccionario vacío existen?

4. ¿Cuál es el tipo de dato de un Diccionario y como lo puedo mostrar?

5. ¿Uso llaves o corchetes para definir un diccionario?

3. Accediendo a elementos

Se puede acceder a los elementos de un diccionario:

1) Referenciando a su nombre y la clave entre corchetes o

2) Usando un método llamado get().

Figura 1

Cargue una lista de jugadores de un equipo y muestre algunos pares clave:valor utilizando las dos formas mostradas para acceder. 

1. ¿Cómo se que el método get() se aplica sobre un objeto?

2. ¿El método get() lleva corchetes o paréntesis?

3. Para acceder al elemento escribo el nombre del diccionario y entre corchetes, utilizo ¿clave o índice?

4. Cambiando Valores

Se puede cambiar el valor de un elemento específico, haciendo referencia a él a través de su clave:


Figura 1

La salida de este scritp sería:

Figura 2

5. Recorriendo el Diccionario

Para acceder a un elemento de un diccionario hay tres maneras:

  1. Clave y valor
  2. Clave
  3. Valor

Para recorrer un diccionario se puede utilizar el bucle for .

Existen métodos para devolver la clave de un diccionario, los valores o ambos.

1. Imprimir todos los nombres clave en el diccionario, una por una.


Figura 1

Salida:

Figura 2

2. Imprimir todos los valores en el diccionario, una por una.

Figura 3

Salida:

Figura 4



1. ¿Cuál es la manera tradicional de mostrar un elemento de un diccionario?

6. Adición de elementos

El agregado de un elemento al diccionario se realiza mediante el uso de una nueva clave y su valor.

Figura 1

Salida:

Figura 2

1. ¿La nueva clave puede ser del tipo entero? ¿Y flotante?

2. ¿Para indicar la nueva clave se usa corchetes o llaves?

7. Comprobar si existe Clave

La  palabra clave in se utiliza para determinar si una clave especificada está presente en un diccionario.

El acceso a un valor del diccionario se realiza a través de la clave.

Figura 1 

1. ¿Qué necesito para acceder a un valor del Diccionario?

2. ¿Qué me permite el if?

3. ¿Con que otra palabra clave debo acompañar el if para poder recorrer el diccionario?

4. ¿Si la evaluación de la línea 14, resultara verdadera se ejecutaría la línea 15?

8. Métodos

Los métodos son acciones o procesos que puede realizar un objeto.

Cada objeto tiene sus métodos. Un Diccionario un objeto en Python.

El objeto gato puede maullar
El objeto perro puede ladrar
objeto:gato.
método: maullar
objeto: perro
método: ladrar

Los métodos dependen del tipo de objeto con el que estemos trabajando.


8.1. Método: values , items

Método values():

Este método regresa los valores de un diccionario.


Figura 5

Método items()

Este método sin argumentos permite obtener los pares clave-valor.

Figura 6



el  método items regresa una tupla! , otro tipo de datos de Python.


La salida sería:


1. ¿items() es un método?

2. ¿values() es una función?

3. ¿Qué argumentos recibe items()?

4. ¿Cuántos argumentos recibe values()?

5. ¿Cuántas maneras tenemos para mostrar con un solo for el par clave/valor de un diccionario?


8.2. Método pop y del

Existen varios métodos para eliminar elementos de un diccionario:

1. El método pop() elimina el elemento. Se debe especificar la clave.


Figura 1

Salida:

Figura 2

2. Utilizando el comando del

Figura 3

Figura 4

1. ¿Ud. diría que pop() es un método o una función?

2. ¿Ud. diría que el del es un método o una función?

3. ¿Cómo podemos saber sobre que elemento trabaja un método?

4. ¿Con pop qué argumento paso?

5. ¿Con del qué argumento paso?

8.3. Método popitem()

El método popitem()  elimina el último elemento insertado

Figura 1

Salida:

Figura 2

1. ¿popitem() es un método?

2. ¿Cómo se sobre que objeto se aplica el método popitem()?

3. ¿Qué argumento paso a popitem()?

4. ¿Es cierto que popitem() puede borrar el 2do elemento escribiendo por ejemplo alumno.popitem(2)?

8.4. Método clear()

El método clear()  vacía el diccionario.


Figura 1

Figura 2

1. ¿Me tira un error si quiero mostrar con print() un diccionario vacío?

8.5. Método keys()


El método keys () devuelve una vista de las claves del objeto.

Figura 1

Salida:

Figura 2

9. Función len()

La función len() se utiliza para determinar el número de elementos (par valor-clave) que tiene un diccionario.

 

Imprimir el número de elementos en el diccionario:


Figura 1

1. ¿La función len() que necesita como argumento?

2. ¿La función len() se puede usar en listas?

3. El valor que devuelve len() es:

  • ¿Cantidad de elementos (claves+valores)?
  • ¿Cantidad de pares (claves:valores)?

10. Función del()

Con la palabra clave del se puede eliminar el diccionario por completo.


Figura 1

1. ¿Es cierto que borrar es lo mismo que vaciar?

2. ¿Cuál es la diferencia entre borrar y vaciar ? Elija una analogía para comentar las diferencias

11. Copiar un Diccionario

Existen varias maneras de realizar copias de diccionarios. Suponiendo que dict1 y dict2 son diccionarios:

1. Una forma de copiar un diccionario es con la instrucción: 

 dict2 = dict1

Esta instrucción hace que dict2  sea una referencia a dict1 por lo que los cambios realizados en dict1 automáticamente también se harán para  dict2.

2. Otra forma de hacer una copia o referencia al mismo objeto es utilizando el método de diccionario incorporado copy().

 Hacer una copia de un diccionario con el método copy()

Figura 1

Figura 2


3. La tercer forma de hacer una copia es utilizando el método integrado dict().


 Hacer una copia de un diccionario utilizando dict().
Figura 3

1. ¿Si tengo dos diccionario llamado A y B, y escribo A=B, que pasa cuando elimino un valor de B.  ¿Se elimina en A?

2. ¿Cuántas maneras conoce para crear un diccionario B que contenga los mismos valores que otro A?

 Con el símbolo = el nuevo elemento es SOLO otro nombre para el mismo objeto, por lo tanto los cambios en uno se verán reflejados en el otro.

 Con el método .copy() se crea un diccionario nuevo, y modificar o eliminar uno no afecta al otro.

Versión 3.5 

Veamos el siguiente ejemplo:

La salida para este script será:

Podemos ver que para la Versión 3.5 el método copy crea un NUEVO OBJETO, línea 11, pero la asignación (=) en la línea 10, hace que sea el MISMO objeto Lista1 y Lista2 con distintos nombres. los cambios en uno se reflejan en el otro.

Versión 3.7 o superior.


La salida de este script es la siguiente...

Con esta salida podemos ver que:
Cuando los valores de un diccionario NO son listas, el metodo copy (Linea 4) funciona.
Cuando en los valores de un diccionario hay listas el método copy NO genera un nuevo objeto, así que los cambios en uno dic3, se reflejan en dic4. 

Copia Fresca 

Para tener un NUEVO OBJETO diccionario que NO sea una referencia con otro nombre se puede usar el método deepcopy de la librería copy.

Veamos un Ejemplo:

La salida de este scritp, sería:

Se puede observar en la salida del script, que los cambios en un diccionario x NO afectan al otro diccionario z, ya que con el método deepcopy de la librería copy se genera un nuevo objeto.

Una copia fresca del diccionario z al x se realiza en la línea 9, observe que esto es posible por que en la línea 1 se importó la librería copy!

Esto se aplica para Listas también, veamos un ejemplo:

La salida sería:

Si usamos la librería copy:

Se puede ver que ahora si hace lo esperado:

Todo esto NO sucede para datos sencillos:

La salida será:

12. Crear un Diccionario

Con el constructor dict ()  (función interna de Python) se puede crear un diccionario:

Figura 1

Funciones internas de Python o Built -in- Functions

Las funciones internas son propias de Python. Se usan en diversas ocasiones con distintos elementos como es el caso ya visto de len(), print() entre otras.

Si desea obtener mayor información sobre estas funciones puede dirigirse al sitio de documentación oficial de Python : Documentación de Python ( docs.python.org/3/library/functions.html)

1. Compare las dos maneras de crear un diccionario:

  1. declarando e inicializando el diccionario
  2. utilizando el constructor dict()

Busque r en el sitio : https://docs.python.org/3/library/functions.html y compruebe si existe esta función interna en Python

13. Diccionarios con Listas

Una lista puede ser el valor de una clave de un diccionario. 

Figura 1

Observar el último par de valores del Diccionario:  es una lista, donde:

  1. La Clave del Diccionario ' verano' es el nombre de la Lista.
  2. El valor del Diccionario  son los valores de la Lista.

Analice la línea 14: se hace referencia a un elemento de la lista:

  1. Invocamos el nombre del Diccionario: meses
  2. Indicamos la Clave del Diccionario: 'verano'
  3. Indicamos el índice de la lista, es este caso un rango  [0:]
  4. El tipo de dato de la clave ' verano' es del tipo string.
  5. El tipo de dato que corresponde a la clave verano es list, y se muestra en al línea 13

Salida:

Figura 2

1. ¿Qué tipo de dato es la Clave 'verano'?

2. ¿En que línea se muestra el tipo de dato que es la clave  verano?

3. ¿Qué tipo de dato es el valor de la clave verano?

4. ¿En que línea se muestra el tipo de dato que corresponde a la clave verano?

Ejemplo de Diccionarios y Listas y acceso a sus elementos.

14. Listas con Diccionarios (nuevo 2024)

Vamos a crear una Lista donde la misma contiene como términos a Diccionarios.

Por el momento, para facilitar el código no vamos a considera la posibilidad de que se generen excepciones !!

Ejemplo 1.

La lista será con diccionarios será:

datos=[{"nombre":"","edad":0,"dni":0},{"nombre":"","edad":0,"dni":0}]

Veamos el código para cargar esta lista llamada datos que tiene 2 diccionarios.


Podemos ver que para el for de la línea 4 y 9, la variable i es un diccionario!!.
Cuando hacemos referencia a un diccionario, para poder acceder a el valor debemos hacer referencia a la clave, tal como lo muestran las líneas, donde reitero i es un diccionario!



La salida al ejecutar este script sería:


Ejemplo 2.


Vamos a crear un script en el que no necesitemos escribir los nombres de las claves, para facilitar el ingreso.



Vemos que en la línea 4, el for, hace que la variable i sea uno de los diccionarios que formas la lista datos.
Para la línea 5, el j toma
Ejemplo 3.
los valores de las claves del diccionario i, es por eso que podemos cargar el valor de una clave del diccionario invocando el nombre del diccionario y entre [] la clave, como se hace en la línea 6.



Ejemplo 3.

Veamos otra manera de recorrer el diccionario, usando indices para recorrer la lista



Podemos ver en este ejemplo que accedemos a los elementos de la lista usando índices:


Aquí, i toma valores de un rango de enteros...0,1,2.. y datos[i] es un diccionario.
Al igual que antes para hacer referencia a cada clave uso  j:


Donde j toma los valores de las claves de cada diccionario.


Ejemplo 4.

Vamos a escribir un código que permita cargar  nombre y nota de varios alumnos, en donde el nombre y la nota serán parte de un diccionario. La lista tendrá muchos diccionarios, donde cada elemento de la lista es un diccionario.
Veamos el codigo.




La salida de este script sería:
Si intentamos listar y no cargamos nada:


Si ingresamos una opción de menú no válida:


Si ingresamos una nota no válida:


Sin ingresamos un texto en el lugar de la nota:

Y finalmente si listamos luego de cargar varios registros:



14.1. ¿Por que Lista con Diccionarios?

Informativo

Vamos a tratar de mostrar el por que queremos crear Listas que contienen Diccionarios, no es para complicar la vida de nadie.

Los datos se guardan en algo que se conoce como Base de Datos. Las Bases de Datos están formadas por Tablas, que se relacionan. Vemos el siguiente ejemplo:

Un alumno desde el sistema completa sus datos en la tabla: 

Alumnos, los cuales son:

  1. dni
  2. nombre
  3. carrera que cursa

Sobre los campos o "claves " 1 y 2 no podemos poner ninguna restricción, pero la tabla Alumnos, NO puede almacenar en el campo nombre de carrera, cualquier carrera. 
Para evitar eso y LIMITAR solamente a las carreras posibles en OTRA TABLA, se cargan las carreras posibles, esto último NO lo hace el alumno, el alumno SOLO elije una de las carreras cargadas en la tabla de Carreras.
Esto Gráficamente se vería como:


Veamos de otra forma las tablas.
Esta sería la tabla Carreras que NO la carga el alumno.


Y esta sería la tabla Alumnos:

Podemos ver que hay algo llamado "Indice", que sería equivalente a los iíndices de las listas.
Luego tenemos "claves" como ser nombre_alumno y nombre_carrera, y sus valres, que serían equivalentes a un diccionario.
Se podría decir que cada línea ( se lo llama registro) es un diccionario.
Recordemos la salida del Código anterior:


Imposible negar las similitudes :-).

Esta relación entre las Bases de Datos y las Listas con Diccionarios, hace que sea importante saber como completar una lista que tenga com valores los diccionarios.


15. Resumen de métodos y funciones

Listado de métodos y funciones relacionadas con Diccionarios. Algunas fueron vistas en este capítulo.

  • clear() Removes all Items
  • copy() Returns Shallow Copy of a Dictionary
  • fromkeys() creates dictionary from given sequence
  • get() Returns Value of The Key
  • items() returns view of dictionary's (key, value) pair
  • keys() Returns View Object of All Keys
  • popitem()Returns & Removes Element From Dictionary
  • setdefault() Inserts Key With a Value if Key is not Present
  • pop()removes and returns element having given key
  • values()returns view of all values in dictionary
  • update()Updates the Dictionary
  • any()Checks if any Element of an Iterable is True
  • all()returns true when all elements in iterable is true
  • ascii()Returns String Containing Printable Representation
  • bool()Converts a Value to Boolean
  • dict()Creates a Dictionary
  • enumerate()Returns an Enumerate Object
  • filter()constructs iterator from elements which are true
  • iter()returns an iterator
  • len() Returns Length of an Object
  • max() returns the largest item
  • min() returns the smallest value
  • map() Applies Function and Returns a List
  • sorted() returns a sorted list from the given iterable
  • sum() Adds items of an Iterable
  • zip()Returns an iterator of tuples

Se puede ver ejemplos en:

https://www.programiz.com/python-programming/methods/dictionary

16. Ejercicios Resueltos

Ejercicio 1:

Se necesita un pequeño programa que permita convertir un determinado monto de “pesos” en alguna moneda disponible.Las monedas disponibles estarán almacenadas en un diccionario, así como la relación de conversión correspondiente. Se solicitará al usuario el monto a convertir, y la moneda final. Antes de esto último, se deberán mostrar las alternativas disponibles. Buscar la forma de presentar todo con estética y que resulte intuitivo, además de minimizar los errores a cometer por parte del usuario. Tomando como base lo realizado anteriormente, asociar a cada moneda su nomenclatura corta. Ejemplo: para dólares es USD.

De esta forma el resultado puede mostrarse sin conflictos en las cantidades (singular o plural). Nota: el valor de una clave en un diccionario, puede ser un tipo de dato que admita múltiples valores.


Ejercicio 2:

Se necesita un pequeño programa que permita convertir un determinado monto de “pesos” en alguna moneda disponible. Las monedas disponibles estarán almacenadas en un diccionario, así como la relación de conversión correspondiente. Se solicitará al usuario el monto a convertir, y la moneda final. Antes de esto último, se deberán mostrar las alternativas disponibles. Buscar la forma de presentar todo con estética y que resulte intuitivo, además de minimizar los errores a cometer por parte del usuario.


Ejercicio 3:

Realizar un programa que permita la carga de datos de estudiantes.
Los datos a cargar son:
    Nombre Completo → Tipo de Dato?
    Nota 1 → Tipo de Dato? Rango?
    Nota 2 → Tipo de Dato? Rango?

Se debe mostrar el siguiente Menu:
    1- Carga de estudiante
    2- Mostrar la cantidad de estudiantes cargados
    3- Mostrar el promedio de cada estudiante
    S- Salir

Si ingresa 1: Se deberá cargar un DICCIONARIO que contenga como CLAVE el nombre
completo del estudiante EN MAYUSCULAS, y como valor, una lista que contenga sus
dos notas de evaluaciones. Se debera cargar un estudiante por vez, es decir,
luego de cada carga se debera mostrar el menu nuevamente.
Si ya se cargo el estudiante, mostrar un cartel ESTUDIANTE YA CARGADO

Si ingresa 2: Mostrará por pantalla la cantidad de estudiantes cargados.

Si ingresa 3: Listar los estudiantes con sus promedios.

Para salir debe ingresar S o s

Se debe verificar que el ingreso de las opciones SI O SI sea uno de los valores
posibles
"""
estudiantes={}
suma=0
while True:
    print("Menu:")
    print("1- Carga de estudiante")
    print("2- Mostrar la cantidad de estudiantes cargados")
    print("3- Mostrar el promedio de cada estudiante")
    print("S- Salir")
    op=input()
    
    while op!='1' and op!='2' and op!='3' and op.upper()!='S':
        print("Error, reingrese la opcion...")
        print("1- Carga de estudiante")
        print("2- Mostrar la cantidad de estudiantes cargados")
        print("3- Mostrar el promedio de cada estudiante")
        print("S- Salir")
        op=input()
    
    
    if op=='1':
        try:
            a=input("Ingrese el nombre completo: ")
            if a.upper() in estudiantes:
                raise Exception
            b=float(input("Ingrese la nota 1: "))
            c=float(input("Ingrese la nota 2: "))
            notas=[b,c]
            estudiantes[a.upper()]=notas
        except ValueError:
            print("Error, dato incorrecto")
        except Exception:
            print("ESTUDIANTE YA CARGADO")

    
    elif op=='2':
        print("La cantidad de estudiantes cargados es de: {}".format(len(estudiantes)))    
    
    elif op=='3':
        for i in estudiantes:
            suma=0
            for j in estudiantes[i]:
                suma=suma+j
            print("El promedio de {} es {}".format(i,suma/2))
            
    
    elif op.upper()=='S':
        print("Finalizando...")
        break
    
Ejercicio 4:


Mostar el tipo de dato de cada clave del Diccionario :{1:"Hola","2":True,"Lista":["a","b","c"],"D":{"a":1,"b":2}}.
En este ejercicio vamos a usar la función isinstance().
Esta función tiene 2 argumentos y regresa True o False. Si el primer argumento es del mismo tipo que el segundo argumento pasado como tipo ( list, dict, str, int, float, bool) regesa True, caso contrario regresa False.




17. Ejercicios Propuestos

  1. Definir un diccionario con 4 elementos.  Las claves son clave1, clave2, clave3 y clave4. Y los valores correspondientes a cada clave son: un valor entero, un valor booleano, un string y una lista que contiene los números desde el 1 al 4.
  • Mostrar a que tipo corresponde la estructura completa.
  • Mostrar cada uno de sus valores usando sus claves
  • Mostrar que tipo de dato tiene cada valor de clave
  • Agregar un elemento más al diccionario
  • Ingresar por teclado un dato y determinar si existe una clave que coincida con el dato ingresado. Si se encuentra mostrar el valor asociado
  • Copiar en forma “superficial” el diccionario y modificar el primer valor de clave. Observar que sucede con el diccionario original
  • Poner el valor cero a todos los valores del diccionario
  • Recorrer y mostrar todos los elementos clave-valor del diccionario
  • Ingresar por teclado un dato y determinar si existe ese valor en el diccionario. Si se encuentra mostrar la clave.
  • ingresar por teclado un dato y  eliminar del diccionario dicho dato si se encuentra dentro del diccionario.
  • Eliminar todos los elementos del diccionario

2: 

 Dada la lista =[ {'a':0 ,'b':1,'c':2}, {'d':3,'c':4,'b':5}, {'a':5,'d':6,'e':1}]

  • Mostrar elemento {'d':3,'c':4,'b':5}
  • Mostrar el valor 4
  • Agregar a la lista el valor {'f':4,'g':5,'c':2}

 3. Definir un diccionario y luego cargar N elementos. N se ingresa por teclado. Luego:

  • Recorrer el diccionario mostrando el par clave-valor
  • Devolver el número de elementos del diccionario
  • Recorrer el diccionario mostrando las claves
  • Insertar un nuevo elemento en el diccionario
  • Copiar un diccionario a otro vacío
  • Eliminar el diccionario original

4. Definir un diccionario de nombre inventario que tenga el nombre de tres frutas como claves y los valores sean una lista que contenga la cantidad de esa fruta vendida cada día de la semana (considerar que la semana tiene 7 días).

  • Mostrar el diccionario cargado
  • Mostrar las claves del diccionario
  • Mostrar todos los valores cargados en el diccionario
  • Agregar una nueva fruta como clave al diccionario y sus ventas en la semana
  • Mostrar en pantalla el nombre de cada fruta y el total vendido de esa fruta en la semana
  • Mostrar en pantalla el nombre de cada fruta y el promedio vendido de esa fruta en la semana
  • Mostrar el nombre de la fruta que mas se vendió esa semana.
  • Ingresar un nro (1, 2, 3 ó 4) y mostrar clave y valores para esa fruta (la 1era, la 2da, la 3era o la 4ta) 
  • Mostrar qué fruta se vendió mas y qué día.
  • Copiar las claves del diccionario a una lista nueva.
  • Mostrar esa lista nueva ordenada de menor a mayor
  • Ingresar el nombre de una fruta y un día de la semana, mostrar el valor de la venta de esa fruta ese día. Pedirle al usuario que ingrese un nuevo valor para esa fruta para ese día y modificarlo. Mostrar nuevamente para verificar la edición.
  • Vaciar el diccionario y mostrarlo
  • Eliminar el diccionario

5. Definir un diccionario con los siguientes pares: 

  • Fiat: Uno
  • Ford: Ranger
  • Toyota: Hilux
  • Peugeot: 206

Mostrar en pantalla una de las parejas, luego elimínela, y agregue al diccionario el par "Chevrolet": "Corsa". Finalmente imprima el diccionario.

6. Consulte en la página https://dolarhoy.com/ las distintas cotizaciones del dólar estadounidense en el día de la fecha. Arme un diccionario con las mismas. Imprima clave y valor del tipo de cambio blue. Finalmente acceda a la cotización del tipo de cambio dólar bolsa y calcule el valor en pesos de una casa que vale U$D 500000; muéstrelo en pantalla.

7. Recientemente ha finalizado la temporada regular de la Liga Nacional de Básquet. Arme un diccionario con los partidos jugados (PJ), los ganados (PG) y los perdidos (PP) por Oberá Tenis Club (https://www.laliganacional.com.ar/laliga/page/estad_posiciones). Imprima el diccionario. Accediendo a los valores cargados, calcule el porcentaje de partidos ganados y el de partidos perdidos. Muestre en pantalla los resultados y agregue dichos valores al diccionario creando las claves G (porcentaje ganados) y P (porcentaje perdidos). Imprima el diccionario.

8. Ingrese por teclado las capitales de los siguientes departamentos de Misiones: Capital, Guaraní y Cainguás. Cree un diccionario con dichos datos. Finalmente cree un par clave-valor nuevo, donde la clave se llamará "Ciudades más pobladas" y el valor será una lista que incluya las 3 ciudades más pobladas de la provincia (https://es.wikipedia.org/wiki/Provincia_de_Misiones#Principales_ciudades). Imprima la segunda ciudad más poblada.

9. Ingrese por teclado las 3 películas más taquilleras de todos los tiempos (https://es.wikipedia.org/wiki/Anexo:Pel%C3%ADculas_con_las_mayores_recaudaciones) y almacénelas en una lista. Luego arme un diccionario siendo el nombre de las películas las claves, y los correspondientes valores serán listas donde el primer elemento sea la recaudación, el segundo el presupuesto y el tercero el año de estreno. Imprima ""Nombre de la película" se estrenó en el año "año de estreno", costó "presupuesto" y recaudó "recaudación"" para cada una de las películas.

10. Cargar un Diccionario con el nombre de  tres alumnos y las notas de tres parciales.

  • Validar las notas al cargar [0,10]
  • Mostrar el nombre de cada alumno y SOLO la mayor nota de los tres parciales.
  • Mostrar el nombre de cada alumno y el promedio de las tres notas de los tres parciales.
  • Cargar desde el teclado dos listas con valores reales, lista1 y lista2. Luego incluir en un diccionario las listas como valores para las claves : 'UNO' y 'DOS'.

11. Cargar un Diccionario 4 conjuntos de claves/valores.

  • Mostrar las claves del Diccionario Solamente.
  • Mostrar los valores del Diccionario Solamente.

12. Definir un Diccionario.Mostrar el Diccionario. Pedir el ingreso de una Clave y mostar el Valor para esa clave por pantalla y eliminar esa clave/valor del diccionario. Mostrar el diccionario.

13. Definir :

x=(1,2,3,4) 

Mostar por pantalla el tipo de dato que es x. Luego generar un Diccionario con los valores de x como claves usando método fromkeys().

  • Cuantos Argumentos acepta fromkeys?
  • Cuantos argumentos estoy pasando en la resolución de este ejercicio?

Para consultar sobre el uso de fromkeys, puede referirse a la documentación oficial de python:

https://docs.python.org/3/library/stdtypes.html?highlight=fromkeys#dict.fromkeys

14. Escriba un diccionario de banderas donde liste los colores que componen las banderas de 6 países: Italia, Libia, España, Argentina, Japón, China.

  • Muestre el diccionario.
  • Borrar el país de Libia.
  • Inserte el país Uruguay y los colores de su bandera al principio del diccionario.
  • Agregar aparte de los colores, características que tiene cada bandera, la de Argentina un sol, la  de Japón un círculo, a la de España un escudo.

15. Escriba un diccionario de español a francés con los siguientes animales:
        gato = chat
    perro = chien
    caballo = cheval
    a-    Muestre el diccionario.
    b-    Verifique (mostrando en pantalla True o False) si existe en el diccionario la traducción de caballo y de cisne.
    c-    Pida el ingreso por teclado el nombre de un animal y el código debe mostrar su traducción al francés.
    d-    Verifique en el diccionario con True que la traducción de gato es chat.
    e-    Modifique la traducción de gato por minou.
    f-    Realice una copia del diccionario y agregue al diccionario original la traducción de cisne (cygne).
    g-    Elimine perro del diccionario original.
    h-    Muestre los dos diccionarios por pantalla.
    
16. Defina el siguiente diccionario en Python:
        {'entero': 10, 'flotante': 2.5, 'string': 'Hola'}

 a-    Agregue una nueva clave llamada 'lista' que contenga una lista vacía.

 b-    Ingrese por teclado 3 elementos a la lista que agregó en el punto anterior.

 c-    Muestre en pantalla el diccionario.

 d-    Muestre en pantalla solamente la lista.

 e-    Modifique el segundo elemento de la lista.

 f-    Realice una copia del diccionario y muestre por pantalla.

 g-    Al diccionario original agregue una nueva clave llamada 'diccionario' que contenga un diccionario de un elemento. 

h-    elimine el último elemento de la lista del diccionario original.

i-    Cambie el valor de la clave 'entero' por 25.

j-    Muestre ambos diccionarios.

k-    Vacíe el diccionario original y muestre por pantalla ambos diccionarios.

l-    Borre ambos diccionarios.

17. Escribir un programa que pregunte al usuario su nombre, edad, dirección y teléfono y lo guarde en un diccionario. Después debe mostrar por pantalla el mensaje: "nombre" tiene "edad" años, vive en "dirección" y su número de teléfono es "telefono".

18. Escribir un programa que le permita al usuario cargar dos listas de tres números enteros. Luego, agregar estas listas como valores a un diccionario asociados con las claves "Lista1" y "Lista2" respectivamente. 

Agregar un tercer elemento al diccionario, cuya clave sea "Suma" y su valor sea una lista cuyos elementos sean la suma de los elementos de Lista1 y Lista2. Finalmente, mostrar en pantalla el diccionario.

19. Escribir un programa que solicite al usuario que ingrese un número entero "N". Luego, se debe crear un diccionario que almacene los 5 primeros múltiplos del número ingresado. Las claves deben ser "M1, M2, ... , M5" y los valores deben ser los múltiplos correspondientes. Finalmente, mostrar en pantalla: "Los primeros cinco múltiplos de "N" son: " y a continuación los valores separados por coma.

20. Escribir un programa en el que se almacene en un diccionario llamado "PreciosCosto" los precios por kilo de cebollas, morrones, zanahorias y tomates (los precios deben ser ingresados por el usuario).  Luego, se debe crear el diccionario "PreciosVenta" en cual se debe almacenar una copia del diccionario "PreciosCosto" pero los valores deben ser incrementados en un 40%. Finalmente, mostrar en pantalla ambos diccionarios.

21. Escribir un programa que solicite al usuario que ingrese tres listas con tres temperaturas cada una. Luego, agregar estas listas como valores a un diccionario, asociados con las claves "dia1", "dia2" y "dia3" respectivamente. Después agregar dos elementos al diccionario cuyas claves sean "maximas" y "minimas", el primero debe contener como valor una lista con las temperaturas máximas de los tres días, y el segundo debe contener como valor una lista con las temperaturas mínimas. Finalmente, mostrar el diccionario completo en pantalla.

22. DICCIONARIOS - EJEMPLO PRÁCTICO

■ PROBLEMA: Se necesita un pequeño programa que permita convertir un determinado monto de “pesos” en alguna moneda disponible. Las monedas disponibles estarán almacenadas en un diccionario, así como la relación de conversión correspondiente. Se solicitará al usuario el monto a convertir, y la moneda final. Antes de esto último, se deberán mostrar las alternativas disponibles. Buscar la forma de presentar todo con estética y que resulte intuitivo, además de minimizar los errores a cometer por parte del usuario.

■ Ejemplo de uso:


■ PROBLEMA: Tomando como base lo realizado anteriormente, asociar a cada moneda su nomenclatura corta. Ejemplo: para dólares es USD. De esta forma el resultado puede mostrarse sin conflictos en las cantidades (singular o plural). Nota: el valor de una clave en un diccionario, puede ser un tipo de dato que admita múltiples valores.

■ Ejemplo de uso:


DICCIONARIOS: Manipulación de datos:

■ Dado el siguiente diccionario, quitar el valor 5 de la clave 'lista'.

 ■ Agregar algunas frutas a la clave correspondiente y quitar 'zapallo'.

■ Corregir el diccionario interno 'dicc', a fines de que los valores sean coincidentes a las claves. ■ Antes de cualquier acción, copiar el diccionario original. Realizar una comparación al finalizar, y de esta forma, validar las tareas efectuadas.

diccionario = {'lista': [1,2,3,4,[5,6,7]],

'frutas': ['zapallo','pera','frutilla’],

 'dicc': {1:1,2:2,3:4,4:4,5:5,6:7}, }


23) Diccionarios con Lista.

Se quiere carga los nombres y notas de tres parciales de los alumnos.

Para ello se propone usar un diccionario que como clave tenga el nombre del alumno y como valores una lista para las notas de los parciales-.

Crear un menú como el siguiente:

1) Cargar alumno y notas

2) Mostrar el nombre y promedio mas alto.

S o S) Salir.-


OBS.

  • No deben existir dos nombres iguales, hay que validar y solicitar reingreso si se da esa situación.
  • Las notas deben pertenecer a [0,10] si no es el caso solicitar reingreso.
  • Ver que no puedo ejecutar el punto 2 si al menos no ejecute el punto 1.
24) Solicitar al usuario que ingrese una cantidad F de filas y una cantidad C de columnas para crear una matriz cuadrada.

Luego, cargar la matriz solicitándole al usuario que ingrese cada elemento.

Mostrar toda la matriz y luego solo su diagonal principal.

25) (nuevo 2024) Declarar un diccionario vacío llamado datos. Luego crear un menú como el siguiente:
1) Mostrar el diccionario.
2) Agregar una clave/valor al diccionario.
3) Eliminar una clave/valor determinada del diccionario.
4) Cambiar un valor de una clave.
F ó f ) Finalizar el script.


26) 
Desarrollar un script que permita cargar una lista llamada datos, en la cual se pueden cargar:
  • Listas.
  • Diccionarios.
  • Entero o Reales,
  • String.

Se deberá crear un menú como el siguiente:

  • 1)Cargar
  • 2)Mostrar
  • S)Salir.

Se puede asumir que no existen errores de tipo en la carga como primer versión del código.-


18. Desafío

Consigna (1 hora máximo):

Se quieren cargar las notas de 4 parciales de alumnos de una materia. Al momento de ejecutar el programa se ingresa la cantidad de alumnos N, con N positivo y entero, si no se pide reingreso. Se cargan los N nombres, y para cada nombre 4 notas del tipo real que deben estar en el [0,10], si el valor no corresponde al intervalo indicado se pide reingreso SOLO para la nota que no está en el [0,10]. Si existe un error de tipo, también se pide reingreso.

Solo se puede usar un try/except para la validación del tipo en la Nota.

Nota: La idea de un desafío es simular lo que sería una evaluación parcial ( tiempo y dificultad). Si el alumno termina en 30 minutos se podría considerar que está en condiciones de aprobar un ejercicio de parcial, caso contrario, debería ver la manera de mejorar.


18.1. Resolución

Se quieren cargar las notas de 4 parciales de alumnos de una materia.

Al momento de ejecutar el programa se sabe la cantidad de alumnos.

( para el docente: se ingresa por teclado un entero N. se usa while/try/except para este ingreso, N y N>0 , que será la cantidad claves/valores de alumnos cuyo nombre es la clave y como valores tiene una lista con 4 elementos).


D={}#diccionario vacio
while True:#valido N por tipo y positivo
    try:
        N=int(input("Ingrese cantidad de alumnos: "))       
    except ValueError:
        print("Error en tipo de dato...reingrese.")
    else:
        if N<0:
            print("Cantidad erronea, no puede ser negativa. Reingrese..") 
        else:
            break #N correcto, finalizo 1er While


Se cargan los N nombres y para cada nombre 4 notas que deben estar en el [0,10], si el valor no corresponde al intervalo indicado se pide reingreso SOLO para la nota que no está en el [0,10].

Si existe un error de tipo, también se pide reingreso.

Solo se puede usar un try/except para la validación del tipo en la Nota.

(esto es para que usen un for N y dentro del for 4 un while, con un try/except/else… algo así)


for z in range(N):#una z para cada alumno
    while True:
        nombre=input("Ingrese el nombre del alumno: ")
        if nombre in D:
            print("Ese nombre ya existe..reingrese")
       else:
            break
    L=[]#L es lista temporal se resetea para cada alumno
    for i in range(4):#un i para cada nota
        while True:
            try: #con un try/except/else valido las 4 notas.
                nota=float(input(f"Ingrese la nota {i+1}: "))       
            except ValueError:
                print("Error en tipo de dato...reingrese.")
            else:
                if nota<0 or nota>10:
                    print("Nota fuera de rango. Reingrese..")
                else:
                    L.append(nota)
                    break #salgo del while sigo en el for

    D[nombre]=L #guardo los valores para esa clave.




18.2. Otra resolución

#Resolución sin while True.
d={}#diccionario vacio
n=0
while n<=0:#valido N por tipo y positivo
    try:
        n=int(input("Ingrese cantidad de alumnos: "))       
    except ValueError:
        print("Error en tipo de dato...reingrese.")
    else:
        if n<0:
            print("Cantidad erronea, no puede ser negativa. Reingrese..")
        
for z in range(n):#una z para cada alumno
    nombre=input("Ingrese el nombre del alumno: ")
    l=[]#L es lista temporal se resetea para cada alumno
    for i in range(4):#un i para cada nota
        nota=-1
        while nota<0 or nota>10:
            try: #con un try/except/else valido las 4 notas.
                    nota=int(input(f"Ingrese la nota {i+1}: "))       
            except ValueError:
                    print("Error en tipo de dato...reingrese.")
            else:
                    if nota<0 or nota>10:
                        print("Nota fuera de rango. Reingrese..")
                        
                    else:
                        l.append(nota)
                
    d[nombre]=l #guardo los valores para esa clave.