Hasta ahora hemos presentado dos estructuras fundamentales de datos en Python: listas y tuplas. Ahora presentaremos y comenzaremos a utilizar la estructura de datos tipo diccionario.
La estructura de datos tipo diccionario utiliza una clave para acceder a un valor. El subíndice puede ser un entero, un float, un string, una tupla etc. (en general cualquier tipo de dato inmutable)
Podemos relacionarlo con conceptos que conocemos:
Hay muchos problemas de la realidad que se pueden representar mediante un diccionario de Python.
Recordemos que las listas son mutables y las tuplas inmutables. Un diccionario es una estructura de datos mutable es decir podemos agregar elementos, modificar y borrar.
productos={"manzanas":39, "peras":32, "lechuga":17} print(productos)
Como vemos debemos encerrar entre llaves los elementos separados por coma. A cada elementos debemos indicar del lado izquierdo del caracter : la clave y al lado derecho el valor asignado para dicha clave. Por ejemplo para la clave "peras" tenemos asociado el valor entero 32.
En el bloque principal del programa definir un diccionario que almacene los nombres de paises como clave y como valor la cantidad de habitantes. Implementar una función para mostrar cada clave y valor.
def imprimir(paises): for clave in paises: print(clave, paises[clave]) # bloque principal paises={"argentina":40000000, "españa":46000000, "brasil":190000000, "uruguay": 3400000} imprimir(paises)
En el bloque principal de nuestro programa inicializamos un diccionario con cuatro elementos y lo pasamos a la función imprimir:
paises={"argentina":40000000, "españa":46000000, "brasil":190000000, "uruguay": 3400000} imprimir(paises)
Mediante el ciclo repetitivo for podemos acceder sucesivamente a las claves almacenadas en el diccionario y luego conociendo la clave podemos acceder al valor de forma similar a las listas indicando como subíndice la clave:
def imprimir(paises): for clave in paises: print(clave, paises[clave])
Crear un diccionario que permita almacenar 5 artículos, utilizar como clave el nombre de productos y como valor el precio del mismo.
Desarrollar además las funciones de:
1) Imprimir en forma completa el diccionario
2) Imprimir solo los artículos con precio superior a 100.
def cargar(): productos={} for x in range(5): nombre=input("Ingrese el nombre del producto:") precio=int(input("Ingrese el precio:")) productos[nombre]=precio return productos def imprimir(productos): print("Listado de todos los articulos") for nombre in productos: print(nombre, productos[nombre]) def imprimir_mayor100(productos): print("Listado de articulos con precios mayores a 100") for nombre in productos: if productos[nombre]>100: print(nombre) # bloque principal productos=cargar() imprimir(productos) imprimir_mayor100(productos)
Para agregar elementos a un diccionario procedemos a asignar el valor e indicamos como subíndice la clave:
nombre=input("Ingrese el nombre del producto:") precio=int(input("Ingrese el precio:")) productos[nombre]=precio
Si ya existe el nombre de producto en el diccionario se modifica el valor para esa clave.
Para consultar si una clave se encuentra en el diccionario podemos utilizar el operador in:
if clave in diccionario: print(diccionario[clave])
Esto muy conveniente hacerlo ya que si no existe la clave produce un error al tratar de accederlo:
print(diccionario[clave])
Desarrollar una aplicación que nos permita crear un diccionario ingles/castellano. La clave es la palabra en ingles y el valor es la palabra en castellano.
Crear las siguientes funciones:
1) Cargar el diccionario.
2) Listado completo del diccionario.
3) Ingresar por teclado una palabra en ingles y si existe en el diccionario mostrar su traducción.
def cargar(): diccionario={} continua="s" while continua=="s": caste=input("Ingrese palabra en castellano:") ing=input("Ingrese palabra en ingles:") diccionario[ing]=caste continua=input("Quiere cargar otra palabra:[s/n]") return diccionario def imprimir(diccionario): print("Listado completo del diccionario") for ingles in diccionario: print(ingles,diccionario[ingles]) def consulta_palabra(diccionario): pal=input("Ingrese la palabra en ingles a consultar:") if pal in diccionario: print("En castellano significa:",diccionario[pal]) # bloque principal diccionario=cargar() imprimir(diccionario) consulta_palabra(diccionario)
La función de cargar crea el diccionario y va solicitando la palabra en castellano y su traducción. Luego de agregar un elementos se solicita el ingrese de una variable string pidiendo que confirme si quiere cargar otra palabra en el diccionario o finalizar:
def cargar(): diccionario={} continua="s" while continua=="s": caste=input("Ingrese palabra en castellano:") ing=input("Ingrese palabra en ingles:") diccionario[ing]=caste continua=input("Quiere cargar otra palabra:[s/n]") return diccionario
La función imprimir muestra el diccionario en forma completa:
def imprimir(diccionario): print("Listado completo del diccionario") for ingles in diccionario: print(ingles,diccionario[ingles])
Lo nuevo aparece cuando queremos consultar la traducción de una palabra.
Se solicita al operador que ingrese la palabra en ingles que desconoce y mediante el operador in verificamos si dicha palabra se encuentra dentro del diccionario, en caso afirmativo procedemos a mostrar el valor del diccionario, es decir la palabra en castellano:
def consulta_palabra(diccionario): pal=input("Ingrese la palabra en ingles a consultar:") if pal in diccionario: print("En castellano significa:",diccionario[pal])
ejercicio162.py def cargar(): personas={} for x in range(4): numero=int(input("Ingrese el numero de documento:")) nombre=input("Ingrese el nombre:") personas[numero]=nombre return personas def imprimir(personas): print("Listado del diccionario completo") for numero in personas: print(numero, personas[numero]) def consulta_por_numero(personas): nro=int(input("Ingrese el numero de documento a consultar:")) if nro in personas: print("Nombre de la persona:",personas[nro]) else: print("No existe una persona con dicho numero de documento") # bloque principal personas=cargar() imprimir(personas) consulta_por_numero(personas)