Diccionarios

Es una estructura de datos de Python. Pernite almacenar datos homogéneos o datos de diferente tipo. Esto quiere decir que puede almacenar datos de tipo entero, flotante, listas, cadenas e incluso un diccionario.

Un diccionario tiene dos partes:
- Una clave o índice, la llave deseada para buscar. Permite acceder a un valor
- El valor a establecer o devolver. Es el contenido real del diccionario en cada una de sus entradas.
Cada clave debe ser única

Los dos elementos encerrados entre llaves {...}

Podemos decir entonces que un Diccionario en Python es una colección de pares ordenado {clave: valor}. En inglés: {key:value}

Ejemplos

>>>amigos = {"Carlos":25,"Luis":28,"Marco":35,"Pedro":22,"Miguel":52}

Su estructura

>>>print(type(amigos))

Contenido del diccionario:

>>>amigos
¿Cuántos años tiene Marco?
>>>print(amigos["Marco"])
>>>print("La edad de Miguel es",amigos["Miguel"])
 

Otra forma de definir un diccionario es:

>>>trimestre={}
Ahora ingresamos sus elementos:
>>>trimestre[1]="Enero - Marzo"
>>>trimestre[2]="Abril - Junio"
>>>trimestre[3]="Julio - Septiembre"
>>>trimestre[4]="Octubre - Diciembre"


Ahora, veamos su contenido
>>>print semestre

Una forma elegante de imprimir los valores de un diccionario es:

>>>for i in semestre:
            print("El trimestre:",i,"comprende los meses:",trimestre.get(i))
 

Ejemplo 1

Veamos el siguiene ejemplo:

>>>semana = {1:"Lunes",2:"Martes",3:"Miercoles",4:"Jueves",5:"Viernes",6:"Sabado",7:"Domingo"}

Si se desea saber cómo se llama el i-ésimo dia de la semana, digitamos:<7/p> >>>for i in semana:
>>>print("El dia",i,"tiene",semana.get(i))
 

Algunas de las propiedades de un diccionaio:

Que muestre las claves o keys:
>>>semana.keys()
Que muestre los valores del diccionario:
>>>semana.values()
Obtener un valor en particular, por ejemplo el 5to día
>>>semana.get(5)
Extraer un valor en particular y removerlo del diccionario; por ejemplo extraer el segundo día:
>>>semana.pop(2)
Veamos ahora el diccionario
>>>semana
Podemos notar que ya no está el Martes ni su key de entrada.
Vamos a añadir un nuevo elemento
>>>semana.setdefault(2,"Martes")
>>>semana

Si bien es cierto que la lista está desordenada, no es impedimento para mostrarlo como lo deseamos:

>>>for i in range(7):
            print("Dia",i,semana.get(i))

El resultado es:
Dia 0 None
Dia 1 Lunes
Dia 2 Martes
Dia 3 Miercoles
Dia 4 Jueves
Dia 5 Viernes
Dia 6 Sabado

Explicación de la sentencia for:

Range es un vector de 7 elementos: 0, 1, 2, 3, 4, 5, 6. De forma que i toma, en cada iteración uno de estos valores, secuencialmente.
Cada vez que i toma un valor, se imprime el mensaje compuesto por una lista de variables y mensaje entre comillados. El separador "," permite "concatenar" todo en el mensaje que se imprimirá línea por línea.


En el diccionario el elemento 0 no está definido. Esto ocurre ya que cuando usamos range(n), los valores que se toma son de 0 hasta 6.

Podemos ovbiarlo usando:
>>>for i in range(1:7):
            print("Dia",i,semana.get(i))

 

Ejemplo 2

Dadas las listas: m y diasMes:

>>>m = ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Setiembre","Octubre","Noviembre","Diciembre"]
>>>diasMes=[31,28,31,30,31,30,31,31,30,31,30,31]
Vamos a crear con estas dos listas, el diccionario meses de forma que m constituya la key y el diasMes los values o valores.
Ante todo, definimos un diccionario vacío:
>>>mes={}

Puesto que diasMes.pop(0), extrae de la lista diasMes el elemento 0 y luego elimina este elemento de la lista, empezaremos a extraer los elementos de m, siempre el que ocupa la posición 0. Cuando se extraiga y remueva m[0] = "Enero", en la lista restante, m[0] será "Febrero", etc.

Este elemento extraído, lo pondremos en una clave del diccionario mes.
 

Esto significa que vamos a recorrer los elementos de m para que, tomándolo como key, guardemos en dicha posición, el elemento extráido de diasMes.

He aquí la instrucción. Como m tiene 12 elementos, cogeremos estos como keys y diasMes.pop(0) será su value. Al final del print, debe presionar dos veces:

>>>for i in m:
            mes.setdefault(i,diasmes.pop(0)


Imprima mes
>>>mes

Finalmente vamos a imprimir la lista de los mese y los día que tiene cada mes

>>>for i in mes:
            print("El mes",i,"tiene",mes.get(i))

 

Nota

Cuando veamos programación volveremos sobre todos estos tipos de datos en Python

Continuar en la siguiente sesión