Diccionarios en Python – Crear, acceder, modificar y sus metodos

Cargando Diccionarios

 

En esta lección vamos Diccionarios que nos van a ser realmente muy útiles y nos van a permitir almacenar valores ordenados mediante claves.
Estos nos permiten ordenar muchos datos de manera más comprensible y sencilla!

 

Diccionarios en Python

 

Son estructuras de datos utilizadas para mapear claves arbitrarias a valores.

En la definición son importante las siguientes palabras : Estructuras, mapear, claves, valores. Y ahora te voy a mostrar porque 😉

Con estructura nos referimos a un orden predeterminado que nos permite mapear (crear una base de datos ordenada gráficamente) valores mediante pares «clave – valor».

De esta forma podremos guardar «Valores» (Juan, 55, Masculino, Si, No, 4, $16000) en «Claves» (Nombre, Edad, Genero, Hijos, Casado, Cuantos Hijos, Ingresos) de una manera mas ordenada y accesible.

Imagina que debes realizar una encuesta a 100 personas, y vas por ahí en la calle con todas esas planillas mientras llueve. Obviamente debes tener un apartado para identificar a la persona por su nombre, edad, sexo, etc. Estos son claves: Nombre, Edad, Género. Y cuales sean los de la persona son valores: Margarita, 55,  Femenino.

Mediante ellos podrías ordenar estos datos de esta manera:

 

Clave (Key)
Valor (Value)
NombreMargarita
Edad55
GeneroFemenino

Esto que hicimos anteriormente podría verse como «Mapeo de Datos«, que significa ordenarlos gráficamente para que sean mas accesibles y no nos causen un dolor de cabeza cuando nos pregunten la edad de Margarita entre 100 personas mas y tengamos que buscar entre 100 hojas todas mojadas, arrugadas y manchadas con café.

Margaritaaaaa!!

-Jodida Margarita ¿Donde te has metido!!?

Bien, supongo habrás entendido la finalidad de los diccionarios, imagina tener que ordenar miles de datos.. Y para eso justamente es útil la programación, sea cual sea el lenguaje. Don’t panic! Organize!!

Vamos a ver como crearlo finalmente, para agregar algunos datos y acceder a ellos, pero esta vez lo haremos desde el IDE, así que abre Geany y deja de pensar en ella (Margarita).

Espero no enfrentar ninguna clase de demanda por esto!

 

 

Sintaxis de un Diccionario en python

Para crearlo hacemos igual que si declaramos una lista. El nombre del diccionario seguido del identificador » = «y luego entre llaves { } agrupamos Clave : Valor separadas por comas, así:

MiDiccionario = {'Nombre' : 'Margarita', 'Edad' : 55, 'Genero' : 'Femenino'}

En el código anterior tenemos resaltadas con negritas las Claves, y sin negritas los valores. Utilizamos comillas simples para aquellos datos que son texto.

 

MiDiccionario = {clave1 : valor, clave2 : valor, clave3 : valor }

 

Yo en mi caso particular cuando trabajo con ellos trato de ordenarlos en mi código fuente de la siguiente manera:

MiDiccionario = {
'Nombre' : 'Margarita',
'Edad' : 55,
'Genero' : 'Femenino'
}

Entonces se ve más limpio, accesible, ordenado gráficamente y luego a la hora de editar código lo tendremos mas fácil. En este caso es un diccionario pequeño, con pocas claves, pero si fuera el caso de tener 100 claves y valores haciéndolo de esta forma evitamos confusiones y es mas probable no olvidemos ninguna coma ni comillas.

Una vez creado el diccionario y ubicada Margarita debemos acceder a el.


 

Accediendo a un diccionario

Como vimos almacenamos datos y olvidemos por un momento que son solo 3 datos y imaginemos que fueran miles de datos sobre una persona en particular y debemos «escarbar» allí para solo retirar uno. Saber si tiene mascota, quienes son sus padres, etc. Hagamos una planilla completa de nuestra querida Margarita!! Venga, nos lo va a agradecer algún día!! Venga ya ese código maestro!

MiMarga = {
'Nombre' : 'Margarita',
'Apellido' : 'Filosa',
'Alias' : 'Cuchillos',
'Padres' : ["Maria Chaira", "Carlos Cortez"], #<-------heee! ¿Que paso aqui?
'Edad' : 55,
'Genero' : 'Femenino',
'Estado Civil' : 'Soltera',
'Hijos' : 'Ninguno/a',
'Mascotas' : 'Gatos',
'Nombres de mascotas' : ["Mango", "Doble Filo"#<-------heee! ¿es una lista?
}

 

Ejemplo Diccionario en Geany

Como ves hemos colocado una lista dentro de la clave ‘Padres’ y ‘Nombres de mascotas’, esto es posible y también muy útil para poder almacenar varios valores en una clave!!

Ahora una vez que almacenamos los datos en el diccionario vamos a acceder a ellos para eso hay diferentes formas, supongamos que queremos imprimir solo el apellido de Margarita, lo hacemos utilizando la Funcion print:

Debajo del código colocamos un print seguido del nombre que le dimos al diccionario en este caso Mimarga y luego entre corchetes la clave a la que queremos acceder, que en este caso como dijimos anteriormente sera su apellido.

print (MiMarga ['Apellido'])

Recuerda que todos los elementos seguidos de la función van entre paréntesis!!

Y guardamos nuestro código como diccionario.py, luego a ejecutarlo!! Si aun no sabes guardar y ejecutar archivos de python puedes repasar aquí: Ejecutar archivos .py

El resultado:

Resultado: Diccionarios en python


 

Accediendo a listas dentro de diccionarios

 

Y aquí solo faltaría cambiar la «clave» para imprimir cualquier otro dato que quieras, pero que sucede con aquellos que almacenamos como listas dentro del diccionario?

 

Pues muy fácil, de la misma manera que utilizamos antes para imprimir el valor de una clave , pero añadiendo los indices de la lista que queremos imprimir!

Ejemplo con los padres de Margarita que están almacenados en la clave Padres, y le dimos una lista como valor:

 

print (MiMarga ['Padres'][0:2])

Aquí indicamos que nos imprima los indices desde el 0 al 2 para que nos imprima el padre y la madre. Los corchetes indicando los indices deben ir seguido de la clave que almacena la lista.

 

Resultado:

Resultado


 

Modificando datos de diccionarios

Vamos a ver ahora las instrucciones para modificar elementos de nuestros diccionarios!

Agregar, reemplazar y modificar elementos

Bien anteriormente creamos un diccionario como una ficha completa de Margarita:

MiMarga = {
'Nombre' : 'Margarita',
'Apellido' : 'Filosa',
'Alias' : 'Cuchillos',
'Padres' : ["Maria Chaira", "Carlos Cortez"],
'Edad' : 55,
'Genero' : 'Femenino',
'Estado Civil' : 'Soltera',
'Hijos' : 'Ninguno/a',
'Mascotas' : 'Gatos',
'Nombres de mascotas' : ["Mango", "Doble Filo"]
}

Vamos a agregar ahora a esta ficha la clave «Ingresos» y el valor «$16000» recordando que las claves son únicas, es decir, como la clave Ingresos no existe esta se añadirá, pero si ya existiera solo se modificaría el valor. La agregamos utilizando la siguiente sintaxis:

NombreDelDiccionario[clave] = valor

En nuestro caso:

MiMarga['Ingresos'] = '$16000'

Ahora, si quisiéramos modificar el valor de los ingresos de Marga de $16000 a $20000 solo deberíamos utilizar el código anterior pero asignando el nuevo valor:

MiMarga['Ingresos'] = '$20000'

Al ser la misma clave, solo cambiara el valor. ¿Pero si quisiéramos cambiar la clave Ingresos por Salario por ejemplo?

Normalmente para modificar una clave, sin iterar (recorrer usando bucle for in) podemos hacerlo utilizando el método pop del cual hicimos uso en Listas y Tuplas. Venga cambiemos esa clave…

MiMarga['Salario'] = MiMarga.pop('Ingresos')

Este código le indica al interprete como podemos ver, que añada la clave ‘Salario’ eliminando la clave ‘Ingresos’. Entonces en realidad no estaríamos modificando la clave, sino reemplazándola conservando su valor 😉

Para eliminar un par (clave : valor) podemos recurrir a la función del:

Es importante que recuerdes que DEL es una función, por lo que el nombre para el diccionario y la clave deben encontrarse entre paréntesis como te resalte mas arriba. DEL es una Predefinida al igual que print!


 

Métodos de los diccionarios

Como vimos anteriormente en las listas, en el caso de los diccionarios también podemos hacer uso de los métodos, si aun no sabes que es un método puedes verlo en esta entrada sobre las listas y tuplas donde los utilizamos por primera vez.

Hay muchos métodos, pero por lo pronto vamos a ver solo aquellos que utilizaríamos normalmente para no confundirnos!

 

 

Método get (Que en español se traduce como «Obtener»)

El método get() nos sirve para obtener por ejemplo el valor de una clave determinada, entonces le indicamos al intérprete hey! Muéstrame el valor de la clave ‘Nombre’ y nos lo imprimirá en pantalla, veamos:

MiMarga.get('Nombre', "valor por defecto, por si la clave no tiene uno")

Resultado: ‘Margarita’

Utilizando el método solamente no nos imprimirá el resultado, para solucionarlo podemos meterlo dentro de un print, así obligamos al interprete a mostrar el resultado del método get:

print (MiMarga.get('Nombre', "No tiene nombre"))

Resultado: ‘Margarita’

O bien almacenándolo en una variable y imprimiendo la variable:

elnombre = MiMarga.get('Nombre', "No tiene nombre")

print (elnombre)

Y en este caso si la clave ‘Nombre‘ no existiera nos mostraría «No tiene Nombre»!

 

 

Método keys y values (Que en español se traduce como «Claves y Valores»)

El método keys() nos servirá para imprimir solo las claves del diccionario!

Y el método value() nos permite imprimir solo los valores!

claves = MiMarga.keys()
Resultado: dict_keys([‘Genero’, ‘Mascotas’, ‘Nombres de mascotas’, ‘Nombre’, ‘Alias’, ‘Apellido’, ‘Hijos’, ‘Edad’, ‘Salario’, ‘Estado Civil’, ‘Padres’])

valores = MiMarga.values()
Resultado: dict_values([‘Femenino’, ‘Gatos’, [‘Mango’, ‘Doble Filo’], ‘Margarita’, ‘Cuchillos’, ‘Filosa’, ‘Ninguno/a’, 55, ‘$16000’, ‘Soltera’, [‘Maria Chaira’, ‘Carlos Cortez’]])

 

Ordenar diccionarios

Si deseas ordenar diccionarios o imprimirlos por clave o valor puedes hacerlo utilizando un bucle for como vemos en este post más avanzado sobre iterables por comprensión.

 

Y esto ha sido todo! Se ha hecho largo igual que con las Listas y Tuplas, pero bien completito!! 🙂

Adiooos! Te invito a crear un diccionario parecido al de Margarita pero tuyo propio, con tus datos y jugar a imprimirlos! Espero te halla sido de utilidad y nos vemos en la siguiente entrada! Bye bye!

 

 

 

 

Ayúdame a llegar a mas personas!
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
  •  
  •