Un diccionario es una colección no ordenada que permite asociar llaves con valores. Utilizando la llave siempre es posible recuperar, de manera eficiente, el valor asociado.
L[i]
L = [1, 3, 4, 2, 4]
#imprimiendo el elemento del indice 3 de la lista L
print(L[3])
#diccionario de telefonos
#llaves: nombres de personas (string)
#valores: numeros de telefono asociados a cada nombre (int)
telefonos = {'Jaimito':5551428, 'Yayita': 5550012, 'Pepito':5552437}
#mostrar por pantalla el telefono de Pepito
print(telefonos['Pepito'])
Un diccionario vacío puede ser creado por medio de la función dict()
y con el paréntesis de llave {}
.
dicc1 = {}
dicc2 = dict()
print(dicc1)
print(dicc2)
Un diccionario con elementos, considera que cada uno de ellos tiene una llave y su valor respectivo.
:
para separar una llave de un valor en un elemento.Considerar el siguiente diccionario que relaciona animales (llaves) con la cantidad de patas que tienen (valores).
patas = {'humano': 2, 'pulpo': 8, 'perro': 4, 'gato': 4}
Se debe hacer una asignación del diccionario con una llave igual a un valor.
patas = {'humano': 2, 'pulpo': 8, 'perro': 5, 'gato': 4}
print("Diccionario antes de agregar un valor")
print(patas)
patas['cienpies'] = 100
print("Diccionario despues de agregar un valor")
print(patas)
#los perros en realidad tienen cuatro patas, cambiar valor en el diccionario
patas["perro"] = 4
print("Diccionario despues de cambiar un valor")
print(patas)
Usando la instrucción del
se puede eliminar un elemento del diccionario. Se debe indicar la llave del elemento que se quiere eliminar.
patas = {'cienpies': 100, 'humano': 2, 'gato': 4, 'pulpo': 8, 'perro': 4}
print("Diccionario antes de eliminar un elemento")
print(patas)
#eliminando el elemento del diccionario
del patas["pulpo"]
print("Diccionario despues de eliminar un elemento")
print(patas)
Al igual que en listas, al intentar eliminar un elemento que no existe (porque no existe la llave en el diccionario) ocurre un error.
patas = {'cienpies': 100, 'humano': 2, 'gato': 4, 'pulpo': 8, 'perro': 4}
#intentando eliminar un elemento en el diccionario
del patas["oso"]
El valor asociado a la llave k
del diccionario d
se puede obtener como d[k]
:
patas = {'cienpies': 100, 'humano': 2, 'gato': 4, 'pulpo': 8, 'perro': 4}
#accediendo y mostrando por pantalla la cantidad de patas de un gato
print("El gato tiene",patas['gato'],"patas")
#intentando mostrar las patas que tiene un oso
print("El oso tiene",patas['oso'],"patas")
La función len
permite saber la cantidad de elementos del diccionario.
patas = {'cienpies': 100, 'humano': 2, 'gato': 4, 'pulpo': 8, 'perro': 4}
print(len(patas))
La instrucción in
verifica si una llave está en el diccionario.
patas = {'cienpies': 100, 'humano': 2, 'gato': 4, 'pulpo': 8, 'perro': 4}
print('pulpo' in patas)
print(8 in patas)
Se pueden utilizar ciclos for para iterar sobre diccionarios.
Considere el diccionario capitales
, donde las llaves corresponden a países y los valores son las capitales respectivas de cada país.
capitales = {'Chile': 'Santiago', 'Peru': 'Lima', 'Ecuador': 'Quito'}
for pa in capitales:
#que esta imprimiendo en cada iteracion del ciclo?
print("pa =",pa)
capitales = {'Chile': 'Santiago', 'Peru': 'Lima', 'Ecuador': 'Quito'}
for pais in capitales:
#que se esta imprimiendo en cada iteracion del ciclo?
print("La capital de",pais,"es",capitales[pais])
Sintaxis genérica:
for var in diccio:
a = funcion(var)
var
está accediento implícitamente a cada llave del diccionario diccio
.diccio[var]
.range
1. Escriba la función contar_letras(palabra)
que reciba un string y retorne un diccionario que indique cuántas veces aparece cada letra en dicho string.
>>> contar_letras('entretener')
{'e': 4, 'n': 2, 'r': 2, 't': 2}
>>> contar_letras('lapiz')
{'a': 1, 'i': 1, 'l': 1, 'p': 1, 'z': 1}
def contar_letras(palabra):
d = dict()
for letra in palabra:
if letra not in d:
d[letra] = 0
d[letra] += 1
return d
diccio = contar_letras("entretener")
print(diccio)
2. Considere la siguente lista de strings palabras
.
lista_palabras = ["el", "jardin", "la", "casa", "mi", "el", "la", ...]
Con el objetivo de construir una nube de palabras, se requiere de una función contar_palabras(lista)
que, dada una lista de palabras lista
, retorne una lista de pares ordenados, donde la primera componente sea una palabra y la segunda la cantidad de veces que paraece dicha palabra en la lista.
>>> contar_palabras(lista)
[('mi', 1), ('casa', 1), ('jardin', 1), ('el', 2), ('la', 2), ...]
def contar_palabras(lista):
d = {}
for p in lista:
if p not in d:
d[p] = 0
d[p]+=1
lista = list()
for pa in d:
lista.append((pa,d[pa]))
return lista
lista_palabras = ["el", "jardin", "la", "casa", "mi", "el", "la"]
print(contar_palabras(lista_palabras))
3. Considere la lista de tuplas viajes
, donde cada tupla agrupa el nombre de una persona y una ciudad donde esa persona ha viajado:
viajes = [("Juan", "Santiago"), ("Pedro", "Coquimbo"), ("Juan", "Valparaiso"), ("Diego", "Talcahuano"), ...]
Escriba la función ciudades_visitadas(viajes)
que reciba una lista como la mostrada en viajes
. Esta función debe retornar un diccionario, cuyas llave corresponde al nombre de una persona y el valor es una lista con todas las ciudades que ha visitado esa persona.
>>> ciudades_visitadas(viajes)
{'Diego': ['Talcahuano'], 'Pedro': ['Coquimbo'], 'Juan': ['Santiago', 'Valparaiso'], ...}
def ciudades_visitadas(viajes):
d = dict()
for tupla in viajes:
persona, ciudad = tupla
if persona not in d:
d[persona] = list()
d[persona].append(ciudad)
return d
v = [("Juan", "Santiago"), ("Pedro", "Coquimbo"), ("Juan", "Valparaiso"), ("Diego", "Talcahuano")]
print(ciudades_visitadas(v))