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