Vous êtes sur la page 1sur 6

Fundamentos de Programación

Práctica Autónoma – Diccionarios

Referencia
 Diccionarios, El tutorial de Python, Pag 33-34

Diccionarios
 Los diccionarios son colecciones de datos que permiten definir y acceder a los componentes
mediante una clave. Cada componente de un diccionario es un par {clave: valor}.
 La clave puede ser cualquier tipo de dato inmutable: primitivos, cadenas de caracteres, tuplas,
entre otros.
 Las claves son únicas

Los diccionarios se indexan con claves, No se indexan mediante un rango numérico, como listas o
tuplas.

Operaciones Diccionario

Acceder a un valor dentro del diccionario


Si queremos obtener el valor dentro de un diccionario solo tenemos que colocar la clave entre
corchetes luego del nombre del diccionario

plato = {"nombre": "encebollado", "ingredientes": ["cebolla","albacora"], "precio":2.25,


"numero_calorias": 203}

“nombre” “ingredientes” “precio” “numero_calorias” clave


“encebollado” [“cebolla”, “albacora”] 2.25 203 valor
n = plato["nombre"] #obtenemos el valor almacenado en la clave “nombre”
print(n)

Si clave no existe se produce un error


n = plato["test"]

Pregunta1 – Cómo puedo obtener el precio del plato

Pregunta2 – Cómo puedo obtener los ingredientes del plato

También podemos acceder a el valor de una clave usando la función get, si la clave no existe
retorna None

n = plato.get("nombre") #"encebollado"

n = plato.get("test") #None

Cambiar el valor almacenado en una clave


Si se asigna un valor a una clave ya existente se cambia su valor

plato["precio"] += 0.75 #aumentar el precio del plato en 0.75 centavos


print(plato)

# agregamos yuca a la lista de ingredientes


# plato["ingredientes"] retorna el valoR almacenado en "ingredientes" que es una lista, a la lista le concademos
el ingrediente yuca y el valor resultante los guardo en la clave “ingredientes”
plato["ingredientes"] = plato["ingredientes"] + ["yuca"]
print(plato)

Pregunta3 – Cambiar en el diccionario plato el número de calorías a 220.

OJO: LOS ELEMENTOS EN EL DICCIONARIO NO TIENEN UN ORDEN


ESPECIFICO, NO SE ALMACENAN EN EL MISMO ORDEN EN EL QUE SE LOS
AGREGA.

Agregar una nueva clave al diccionario


Para agregar un nuevo par clave-valor se escribe la clave entre corchetes y se iguala al valor
# agrega la clave "tipo" al diccionario, y asigna a esa clave el valor "sopa"
# la clave “tipo” no existía, por eso se agrega
plato["tipo"] = "sopa"

Eliminar una nueva clave al diccionario


Para eliminar una clave del diccionario usamos el operador del
# elimina del diccionario codigo la clave 453
codigo = {123:"Matematicas",234:"Fisica",453:"Quimica"}
del codigo[453]

Verificar si una clave se encuentra en un diccionario


Usamos el operador in para saber si una clave está presente en el diccionario. Si la clave se
encuentra presente retorna True caso contrario retorna False

codigo = {123:"Matematicas",234:"Fisica",453:"Quimica"}
if 234 in codigo: El codigo anterior
print(codigo[234]) imprime “Fisica” que es
else: el valor almacenado en
print("codigo 234 no existe en el diccionario")
la clave 234

OJO: in no indica si un valor se encuentra en el diccionario. Para ello necesitamos recorres


el diccionario
“Matematicas” no es
codigo = {123:"Matematicas",234:"Fisica",453:"Quimica"}
r = "Matematicas" in codigo
una clave del diccionario
print(r) # retorna False por lo que el operador in
retorna False

NOTA: Si no estamos seguro que una clave se encuentra en un diccionario, chequear primero
si existe dicha clave con el operador in antes de usarla. Usar una clave que no existe en un
diccionario produce error.

Ejemplo 1:

Crear un programa que permite al usuario chequear el número de teléfono de un contacto


en la agenda. Si el contacto existe imprimir el número telefónico, si no existe imprimir
contacto no existe.

agenda = {"rocio":6038222,
"carlos":234566789,
"maria":2456789}

#bucar un contacto en la agenda telefonico por su nombre


contacto = input("ingrese nombre del contacto")
#para verficiar si una clave existe en un diccionario usamos el operador in
if contacto in agenda:
print(agenda[contacto])
else:
print("Contacto no existe")

Si se tiene el siguiente diccionario que representa la cantidad de estudiantes por paralelo:


paralelos = {'Paralelo01': 30, 'Paralelo14': 26, 'Paralelo08': 29, 'Paralelo02': 30}

Pregunta 4: Qué instrucción(es) debo utilizar para aumentar un estudiante al paralelo 14?
Pregunta 5: Cómo puedo saber cuántos estudiantes hay en el Paralelo02?

Pregunta 6: Cuál es el resultado de la instrucción print(paralelos['paralelo08'] ?

Pregunta 7: Qué instrucción(es) debo utilizar para crear un nuevo paralelo (Paralelo 40) con 0
estudiantes?
Pregunta 8: El Paralelo14 se cerró. Elimine el paralelo del diccionario paralelos?

Iterar sobre diccionarios

Use la estructura for para iterar sobre un diccionario, similar que cuando se itera sobre una
lista. Al iterar sobre un diccionario se obtienen las claves del diccionario.
#cuando recorremos un contacto con un for
#obtenemos las claves en el diccionario
for contacto in agenda:
print(contacto)

Para obtener los valores al iterar, usamos las claves de dichos valores
#usamos la clave para obtener el valor almacenado en la clave
for contacto in agenda:
print("clave: ",contacto, ",numero: ", agenda[contacto])

Ejemplo 2:

Crear un programa que permita al usuario encontrar el nombre de la persona a la que le


pertenece un número telefónico dado. Si el número no existe imprima “contacto no
registrado”.

agenda = {"rocio":6038222,
"carlos":234566789,
"maria":2456789}
#bucar el contacto al que le pertene un numero telefonico dado
numero = int(input("ingrese numero telefonico"))
#para verficiar si una clave existe en un diccionario usamos el operador in
nombre = ""
for clave in agenda:
if agenda[clave]==numero:
nombre=clave
if nombre!="":
print(nombre)
else:
print("No existe contacto con ese numero")

diccionario.keys() : Devuelve una colección con las claves (keys) en el diccionario:

diccionario.values(): Devuelve una colección de los valores en el diccionario

diccionario.items(): Retorna una colección de los pares (clave, valor) de el diccionario. Es


decir una colección de tuplas donde el primer elemento es la clave y el segundo es el valor
almacenado en esa clave.
for contacto,telefono in agenda.items():
print(contacto,telefono)

Ejemplo 3:

Escribir una función llamada contar_palabras(frase) que reciba una cadena de caracteres y
devuelva un diccionario dónde las claves son las palabras y los valores el número de veces
que aparece cada palabra.
>>> contar_palabras(“Ecuador ama la vida Ecuador es cool”)
{“Ecuador”:2, “ama”:1, “la”:1, “vida”:1, “es”:1, “cool”:1}

Solución:
#1) dividimos la frase en palabras.
# Para devidir dividir la frase en palabras usamos el metodo split
# que retorna una lista a partir de una cadena de caracteres, dado
# un delimitador
#2) recorremos la lista de palabras, para ir contando el numero de veces que aparecen
#3) Agregamos la palabra al diccionario y contamos cuantas veces a ocurrido
# Tenmos dos posibles escenarios
# La palabra aparece por primera vez en la frase:
# agregamos la palabra al diccionario con valor de 1
# el valor es el numero d eveces que ha apercido la palabra en el diccionario, como
# es la primera vez que la palabra aparece fijamos el valor de 1.
# La palabra aparece nuevamente
# sabemos que no es la primera vez que la palabra aparece en la frase porque la
# palabra ya se encuentra agregada al diccionario
# lo que hacemos en este caso el aumentar el valor en 1.

def contar_palabras(frase):
#diccionario vacio que se usa para contar las frecuencias
num_palabras = {}
#para contar la misma palabra sin importar si esta en mayuscula o minuscula
frase = frase.lower()
palabras = frase.split()
for p in palabras:
# verificar si es la primera vez que aparece la palabra en la frase o esta ya ha aparecdio
# nateriormente
if p in num_palabras:
# La palabra aparece nuevamente
# aumentamos el contador de apariciones para esa palabra en 1
num_palabras[p] = num_palabras[p]+1
else:
# La palabra aparece por primera vez en la frase
# agregamos la palabra al diccionario con valor de 1
num_palabras[p] = 1
return num_palabras

frase = input("Ingres frase").lower()


contador = contar_palabras(frase)
print(contador)

Ejercicio 9
Una compañía proveedora de internet desea hacer una segmentación de sus clientes según su ubicación
geográfica. Para esto, analizará su base de datos de correos electrónicos con el fin obtener información
sobre el lugar de procedencia de cada cliente.

En una dirección de correo electrónico, el dominio es la parte que va después de la arroba, y


el TLD (Top Level Domain) es lo que va después del último punto. Por ejemplo, en la
dirección fulano.de.tal@espol.edu.ec, el dominio es espol.edu.ec y el TLD es ec.

Algunos TLD no están asociados a un país, sino que representan otro tipo de entidades. Estos TLD
genéricos son los siguentes:

genericos = {'com', 'gov', 'edu', 'org', 'net', 'mil', 'biz', 'info', 'name',
'int'}

1. Escriba la función contar_tld(correos, genericos) que reciba como parámetro la lista


de correos electrónicos, y retorne un diccionario que asocie a cada TLD la cantidad de veces
que aparece en la lista. No debe incluir los TLD genéricos.

correos = ['fulano@espol.edu.ec', 'erika@lala.de', 'li@zi.cn', 'a@a.net',


'gudrun@lala.de', 'otto.von.d@lorem.ipsum.de', 'org@cn.de.ec',
'yayita@abc.ec', 'jozin@baz.cz', 'jp@foo.cl', 'dawei@hao.cn',
'pepe@gmail.com', 'ana@usm.cl', 'polo@hotmail.com', 'fer@x.com',
'ada@alumnos.usm.cl', 'dj@foo.cl', 'jan@baz.cz', 'd@abc.cl']

>>> contar_tdl(corres,genericos)
{'ec': 3, 'cn': 2, 'de': 3, 'cz': 2, 'cl': 5}

Pista:
1) Debo recorrer la lista de correos y de cada correo extraer el tdl
2) Si el tdl no se encuentra en el conjunto de tdl genéricos debo:
a. Si este no se encontraba previamente en el diccionario agregarlo al contador con el
valor de uno
b. Caso contrario incrementar el valor de ese tdl en 1.

Vous aimerez peut-être aussi