Está en la página 1de 25

Estructuras de datos

Diccionarios
1/25
DICCIONARIOS
 Conjunto no ordenado de parejas de datos que tienen
esta forma
llave:valor

 Cada pareja llave:valor es un elemento del diccionario

 Los elementos del diccionario están encerrados entre


llaves { } y separados por una “,”

 Ejemplos: {“one”:“uno”, “six”:“seis”}


{5:“cinco”, 2:“dos”}
2/25
 Llave: es el índice en los diccionarios, pueden ser de
cualquier tipo de datos inmutable. La llave es definida
por el programador

 Los índices en los diccionarios no son como las secuencias que


se indexan exclusivamente con un número entero (0, 1, 2, etc.)

 Valor: datos asociados a las llaves, pueden ser de


cualquier tipo de datos

 Si tenemos una llave específica podemos encontrar el


valor asociado a esa llave
3/25
Operaciones con diccionarios
 Crear diccionarios

 Insertar un elemento (par llave:valor)

 Obtener el valor asociado a una llave

 Eliminar un elemento asociado a una llave

 Cambiar el valor asociado a una llave

 Membresía de la llave
4/25
Crear diccionarios
 Podemos crear el diccionario vacío {} y
luego agregarle elementos

 Un elemento es agregado cuando


damos un par de datos llave:valor y la
llave no existe.

 Si la llave existe entonces la parte de valor


se sustituye
5/25
 Ejemplo: traductor de inglés a español
 En este caso los índices son de tipo string

>>> IngAEsp = {}
>>> IngAEsp["one"] = "uno"
>>> IngAEsp["six"] = "seis"
>>> IngAEsp
{'six': 'seis', 'one': 'uno'}

6/25
 Otras formas de crear un diccionario

 En una instrucción de asignación

>>> IngAEsp={"one":"uno", "two":"dos", "three":"tres"}


>>> IngAEsp
{'three': 'tres', 'two': 'dos', 'one': 'uno'}

7/25
 Función dict : crear un diccionario desde una lista o
tupla. La lista o tupla deben tener elementos (otras
listas o tuplas) con dos valores: el primero se convierte
en la llave y el segundo en el valor

>>> lista = [("Universidad","TEC"),("Edad",35)]


>>> dict1 = dict(lista)
>>> dict1
{'Edad': 35, 'Universidad': 'TEC'}
 Diccionario vacío
>>> d = dict()
>>> d
{}
8/25
 Accediendo un valor asociado a una llave:

diccionario[llave]

>>> IngAEsp = {"one":"uno", "two":"dos", "three":"tres"}

>>> IngAEsp["two"]
'dos'

9/25
 Función len: número de elementos (o pares)
en el diccionario

>>> inventario = {"arroz":500, "café":300, "azucar":400}


>>> len(inventario)
3

10/25
 Función del: borra un elemento del
diccionario

>>> inventario = {"arroz":500, "café":300, "azucar":400}


>>> del inventario["arroz"]
>>> inventario
{'azucar': 400, 'café': 300}

11/25
 Actualizando un elemento de un diccionario: se
actualiza el valor asociado a una llave que debe
existir
>>> inventario = {"arroz":500, "café":300, "azucar":400}
>>> inventario["arroz"]
500
>>> inventario["arroz"]=inventario["arroz"]+200
>>> inventario["arroz"]
700
>>> inventario["aceite"]
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
print (inventario["aceite"])
KeyError: 'aceite' 12/25
 Para buscar una llave en un diccionario usamos el
operador de membresía: in.
 Si la llave existe retorna verdadero(True) y sino
retorna falso (False)

>>> "café" in inventario


True
>>> "aceite" in inventario
False
13/25
Alias y copias
 Cuando se asigna una variable de tipo
diccionario a otra variable, ambas se refieren
al mismo objeto, por tanto un cambio en una
también modifica a la otra (alias)

 Método copy: crea una copia de un


diccionario de tal forma que sea un objeto
diferente al original, por tanto los cambios en
uno no modifican al otro

14/25
>>> opuestos = {"arriba":"abajo","verdadero":"falso"}
>>> copia_d = opuestos.copy()
>>> opuestos["arriba"]
'abajo'
>>> copia_d["arriba"] = "abc"
>>> opuestos["arriba"]
'abajo'
>>> copia_d["arriba"]
'abc'
15/25
Métodos de diccionarios

 diccionario.keys()
Retorna un objeto iterable que contiene solo las llaves
>>> inventario = {"arroz":500, "café":300, "azucar":400}
>>> inventario.keys()
dict_keys(['azucar', 'arroz', 'café'])

Ordenar llaves
>>> sorted(inventario.keys()) # uso de la función sorted:
['arroz', 'azucar', 'café'] # da una lista ordenada

16/25
 diccionario.values()
Retorna un objeto iterable que contiene solo
los valores asociados a las llaves
>>> inventario = {"arroz":500, "café":300, "azucar":400}
>>> inventario.values()
dict_values([400, 500, 300])

Ordenar valores
>>> sorted(inventario.values())
[300, 400, 500]

17/25
 diccionario.items()
Retorna un objeto iterable con tuplas: cada tupla corresponde
a un elemento del diccionario con la llave y el valor asociado

>>> inventario = {"arroz":500, "café":300, "azucar":400}


>>> inventario.items()
dict_items([('azucar', 400), ('arroz', 500), ('café', 300)])

Ordenar elementos (según llave)


>>> sorted(inventario.items())
[('arroz', 500), ('azucar', 400), ('café', 300)]

18/25
 Una forma de recorrer un diccionario
obteniendo la llave y el valor a la vez

>>> for llave, valor in inventario.items():


print(llave, valor)

azucar 400
arroz 500
café 300

19/25
FUNCIÓN sorted

 Crea una lista ordenada a partir de una


secuencia, conjunto o diccionario
 Aplicándola a diccionarios se basa en las llaves

>>> inventario = {"azucar": 200, "arroz":500, "frijoles":150, "cafe":100}

>>> inventario_ord = sorted(inventario)

>>> inventario_ord
['arroz', 'azucar', 'cafe', 'frijoles']

20/25
 Desplegar los elementos de un diccionario en forma
ordenada según la llave

>>> for producto in sorted(inventario):


print(producto, "hay", inventario[producto])

arroz hay 500


azucar hay 200
cafe hay 100
frijoles hay 150

21/25
FUNCIÓN enumerate
 Aplicada a secuencias, conjuntos y
diccionarios da automáticamente el número
del elemento que esta procesándose

>>> for i, j in enumerate([25,20,30,5]):


print(i, j)
0 25
1 20
2 30
3 5
22/25
 Práctica

 Crear el diccionario estudiantes

 Llave: número de carné (entero)

 Valor: lista con el nombre del estudiante,


código de la carrera y cantidad de créditos
ganados

23/25
 Crear el diccionario vacío antes de empezar a agregar
elementos

 Agregar tres elementos al diccionario: póngale Usted los


datos

 Aumentar en 3 los créditos ganados a algún elemento

 Recorrer (con un for) el diccionario y desplegar las llaves y


sus valores, cada elemento en una línea separada.
Ordenar por número de carnet.
24/25
 PRÁCTICA:

LABORATORIO

25/25

También podría gustarte