Saltar a contenido
 No os perd谩is mi futuro contenido, seguidme en y Youtube 馃榿

Diccionarios

Son junto a las listas las colecciones m谩s utilizadas y se basan en una estructura mapeada donde cada elemento de la colecci贸n se encuentra identificado con una clave 煤nica, por lo que no puede haber dos claves iguales. En otros lenguajes se conocen como arreglos asociativos.

Los diccionarios se definen igual que los conjuntos, utilizando llaves, pero tambi茅n se pueden crear vac铆os con ellas:

Note

vacio = {}
vacio
{}

Si consultamos el tipo de la variable que contiene un diccionario con la funci贸n type() encontraremos la palabra dict, esa es la clase que define los diccionarios:

Note

type(vacio)
dict

Definici贸n

Para cada elemento se define la estructura clave:valor:

Note

colores = {'amarillo':'yellow','azul':'blue'}
colores
{'amarillo': 'yellow', 'azul': 'blue'}

Para consultar el valor de una clave utilizaremos la clave a modo de 铆ndice:

Note

colores['amarillo']
'yellow'

Mutabilidad

Los diccionarios son mutables, por lo que se les puede a帽adir elementos sobre la marcha a trav茅s de las claves:

Note

colores['verde'] = 'green'
colores
{'amarillo': 'yellow', 'azul': 'blue', 'verde': 'green'}

Como los diccionarios son mutables tambi茅n podemos sobreescribir un valor:

Note

colores['amarillo'] = 'white'
colores
{'amarillo': 'white', 'azul': 'blue', 'verde': 'green'}

Funci贸n del()

Sirve para borrar un elemento del diccionario:

Note

del(colores['amarillo'])
colores
{'azul': 'blue', 'verde': 'green'}

Por cierto, las claves tambi茅n pueden ser n煤meros, pero son un poco confusas:

Note

numeros = {10:'diez',20:'veinte'}
numeros[10]
'diez'

Una utilidad de los diccionarios es que podemos trabajar directamente con sus registros como si fueran variables:

Note

edades = {'Hector':27,'Juan':45,'Maria':34}
edades['Hector']+=1
edades
{'Hector': 28, 'Juan': 45, 'Maria': 34}

Note

edades['Juan'] + edades['Maria']
79

Lectura secuencial

Es posible utilizar iteraciones for para recorrer los elementos del diccionario:

Note

edades = {'Hector':27,'Juan':45,'Maria':34}

for edad in edades:
    print(edad)
Maria
Hector
Juan

El problema es que se devuelven las claves en lugar de los valores. Para solucionarlo deber铆amos indicar la clave del diccionario para cada elemento:

Note

for clave in edades:
    print(edades[clave])
34
27
45

Si queremos mostrar tanto la clave como el valor podr铆amos hacerlo as铆:

Note

for clave in edades:
    print(clave,edades[clave])
Maria 34
Hector 27
Juan 45

El m茅todo .items() nos facilita la lectura en clave y valor de los elementos. Devuelve ambos valores en cada iteraci贸n autom谩ticamente y nos permite almacenarlos:

Note

for clave, valor in edades.items():
    print(clave, valor)
Maria 34
Hector 27
Juan 45

Listas de diccionarios

Podemos crear nuestras propias estructuras avanzadas mezclando ambas colecciones. Mientras los diccionarios se encargar铆an de manejar las propiedades individuales de los registros, las listas nos permitir铆an manejarlos todos en conjunto:

Note

personajes = []

gandalf = {'Nombre':'Gandalf','Clase':'Mago','Raza':'Humano'}
legolas = {'Nombre':'Legolas','Clase':'Arquero','Raza':'Elfo'}
gimli = {'Nombre':'Gimli','Clase':'Guerrero','Raza':'Enano'}

personajes.append(gandalf)
personajes.append(legolas)
personajes.append(gimli)

print(personajes)
[{'Clase': 'Mago', 'Nombre': 'Gandalf', 'Raza': 'Humano'},
 {'Clase': 'Arquero', 'Nombre': 'Legolas', 'Raza': 'Elfo'},
 {'Clase': 'Guerrero', 'Nombre': 'Gimli', 'Raza': 'Enano'}]

Como ahora tenemos una estructura com煤n a trav茅s de diccionarios, podemos suponer que cada diccionario es un personaje y mostrar los registros mientras los recorremos din谩micamente con un for:

Note

for pesonaje in personajes:
    print(pesonaje['Nombre'], pesonaje['Clase'], pesonaje['Raza'])
Gandalf Mago Humano
Legolas Arquero Elfo
Gimli Guerrero Enano

Curiosidades

Un alumno me dijo que Gandalf no es humano, disculpadme por tal ofensa 馃檱鈥嶐煓団嶐煓団


脷ltima edici贸n: 23 de Septiembre de 2018