Dictionaries / diccionarios en python

12 de agosto de 2018

Python es un lenguaje de programación en boga en el año 2018. En el año 2018 hay más ofertas de trabajo para programadores en python que para programadores en Java. Python está siendo utilizado intensivamente en terrenos de inteligencia artificial, análisis estadístico y bigdata. No está de más aprender Python.

Dictionaries / diccionarios en python

Los dictionaries / diccionarios nos permiten almacenar varios valores en una variable. Los valores almacenados pueden ser números enteros, números decimales, strings / cadenas de caracteres, listas, otros diccionarios... Cada valor es un elemento / element.

¡Las listas también nos permiten almacenar varios valores en una variable! La diferencia entre un dictionary y una lista es que en el dictionary cada elemento tiene un nombre propio, una clave / key por la cual referirnos a él.

Para referirnos a un elemento en una lista usamos su posición en la lista, para referirnos a un elemento en una dictionary usamos su nombre, su clave / key.

Para quienes vienen de otros lenguajes de programación, un dictionary es una matriz asociativa.

Para crear un diccionario que almacene varias strings / cadenas de caracteres usaremos el siguiente código:

mi_primer_diccionario = {
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez"
}

# mi_primer_diccionario es el nombre de la variable que almacenará mi dictionary
# este es dictionary que almacena strings, cadenas de caracteres
# entre llaves estará el contenido de nuestro dictionary { }
# el nombre de nuestro elemento, la clave / key, se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key
# entre comillas va el valor del elemento
# cada elemento del dictionary estará separado por una coma  ( , )
# la lista almacena strings, por lo que cada string va entre comillas

Es posible crear un dictionary que almacene solo números enteros:

mi_dictionary_de_numeros = {
'id' : 1,
'peso' : 2,
'ancho' : 3,
'alto' : 4,
'precio' : 5,
'existencias' : 6 }

# mi_dictionary_de_numeros es el nombre de la variable que almacenará mi dictionary
# este es un dictionary que almacena números enteros
# entre llaves estará el contenido de nuestro dictionary { }
# el nombre de nuestro elemento, la clave / key, se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key 
# entre comillas va el valor del elemento
# cada elemento del dictionary estará separado por una coma  ( , )
# como cada elemento es un número entero, no necesitamos poner comillas al valor de cada elemento

Es posible crear un dictionary que almacene solo números decimales:

mi_dictionary_con_decimales = {
'peso' : 2.5,
'ancho' : 3.7,
'alto' : 4.5,
'precio' : 5.15,
}


# mi_dictionary_con_decimales es el nombre de la variable que almacenará mi dictionary
# este es un dictionary que almacena números decimales
# entre llaves estará el contenido de nuestro dictionary { }
# el nombre de nuestro elemento, la clave / key , se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key
# entre comillas va el valor del elemento
# cada elemento del dictionary estará separado por una coma  ( , )
# como cada elemento es un número decimal, no necesitamos poner comillas al valor de cada elemento

Es posible crear un dictionary que almacene números enteros, números decimales y strings / cadenas de caracteres:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}

# mi_dictionary_campechano es el nombre de la variable que almacenará mi dictionary
# este es un dictionary que almacena números enteros, números decimales y strings
# entre llaves estará el contenido de nuestro dictionary { }
# el nombre de nuestro elemento, la clave / key, se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key 
# cada elemento del dictionary estará separado por una coma  ( , )
# si el valor del elemento es un número entero, no necesitamos poner comillas
# si el valor del elemento es un string, necesitamos poner comillas
# si el valor del elemento es un número decimal, no necesitamos poner comillas

Es posible crear un dictionary que almacene listas:

mi_dictionary_con_listas = {

'portero':["Jorge Campos",34,1.63,"Palo Alto ","044-55-28-43-76-28"],

'lateral_izquierdo':["Joel Sánchez Ramos",28,1.92,"Pabellón de Arteaga ","044-55-28-43-76-26"],
'contencion':["Duilio Davino",38,1.80,"Rincón de Romos ","044-55-28-43-76-25"],
'defensa_central':["Claudio Suárez",25,1.62,"Escárcega ","044-55-28-43-76-15"],
'lateral_derecho':["Raúl Rodrigo Lara",32,1.90,"San José de Gracia ","044-55-28-43-76-23"],

'mediocampo':["Alberto García Aspe",27,1.94,"San Francisco de los Romo ","044-55-28-43-76-24"],
'volante_derecho':["Germán Villa",27,1.94,"Xpujil ","044-55-28-43-76-21"],
'volante_izquierdo':["Pável Pardo",22,1.84,"Calkiní ","044-55-28-43-76-20"],
'volante_de_enganche':["Ramón Ramírez",26,1.70,"Champotón ","044-55-28-43-76-16"],


'delantero':["Cuauhtémoc Blanco",32,1.68,"Jesús María ","044-55-28-43-76-27"],
'extremo_derecho':["Francisco Palencia",32,1.86,"Campeche ","044-55-28-43-76-19"],
'extremo_izquierdo':["Luis Hernández",37,1.63,"Ciudad del Carmen ","044-55-28-43-76-17"]


}


# mi_dictionary_con_decimales es el nombre de la variable que almacenará mi dictionary
# este es un dictionary que almacena números decimales
# entre llaves estará el contenido de nuestro dictionary { }
# el nombre de nuestro elemento, la clave / key , se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key 
# entre comillas va el valor del elemento
# cada elemento del dictionary estará separado por una coma  ( , )
# como cada elemento es un número decimal, no necesitamos poner comillas al valor de cada elemento

Es posible crear una lista que almacene un dictionary en cada elemento:

mi_lista_multidimensional_con_diccionario = [

	  # el primer elemento de mi list, es un dictionary
		{ # creo un dictionary
			"nombre": "Jorge Campos", # un elemento de mi dictionary
			"edad": 34,
			"estatura": 1.63,
			"municipio": "Palo Alto",
			"telefono": "044-55-28-43-76-28",
		}
	,

	  # el segundo elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Cuauhtemoc Blanco",
			"edad": 32,
			"estatura": 1.68,
			"municipio": "Jesus Maria",
			"telefono": "044-55-28-43-76-27",
		}
	,
	 # el tercer elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Joel Sanchez Ramos",
			"edad": 28,
			"estatura": 1.92,
			"municipio": "Pabellon de Arteaga",
			"telefono": "044-55-28-43-76-26",
		}
	,

	 # el cuarto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Duilio Davino",
			"edad": 38,
			"estatura": 1.8,
			"municipio": "Rincon de Romos",
			"telefono": "044-55-28-43-76-25",
		}
	,
	 # el quinto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Alberto Garcia Aspe",
			"edad": 27,
			"estatura": 1.94,
			"municipio": "San Francisco de los Romo",
			"telefono": "044-55-28-43-76-24",
		}
	
]



# mi_lista_multidimensional_con_diccionario es el nombre de la variable que almacenará mi list
# este es una list multidimensional que almacenará  dictionaries
# dentro de la lista anidada creamos un elemento, que será un dictionary  cuyo contenido estará entre llaves { }
# dentro del dictionary el nombre de nuestro elemento, la clave / key , se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key 
# si es una string entre comillas va el valor del elemento del dictionary
# si es un número o decimal no es necesario poner entre comillas el valor del elemento del dictionary
# cada elemento del dictionary estará separado por una coma  ( , )


Dictionaries multidimensionales en python

Es posible crear un dictionary que almacene otros dictionaries, creando con ello un diccionary multidimensional.

Podemos crear por ejemplo un dictionary multidimensional que almacene la información de los alumnos de una escuela y que incluya el nombre, la edad, la estatura, el grado, la ciudad de origen y el teléfono.

lista_de_alumnos = {

	'jugador_1':{
		'nombre': 'Jorge Campos',
		'edad': 34,
		'estatura': 1.63,
		'municipio': 'Palo Alto ',
		'telefono': '044-55-28-43-76-28'
	},
	'jugador_2':{
		'nombre': 'Cuauhtémoc Blanco',
		'edad': 32,
		'estatura': 1.68,
		'municipio': 'Jesús María ',
		'telefono': '044-55-28-43-76-27'
	},
	'jugador_3':{
		'nombre': 'Joel Sánchez Ramos',
		'edad': 28,
		'estatura': 1.92,
		'municipio': 'Pabellón de Arteaga ',
		'telefono': '044-55-28-43-76-26'
	},
	'jugador_4':{
		'nombre': 'Duilio Davino',
		'edad': 38,
		'estatura': 1.8,
		'municipio': 'Rincón de Romos ',
		'telefono': '044-55-28-43-76-25'
	},
	'jugador_5':{
		'nombre': 'Alberto García Aspe',
		'edad': 27,
		'estatura': 1.94,
		'municipio': 'San Francisco de los Romo ',
		'telefono': '044-55-28-43-76-24'
	},
	'jugador_6':{
		'nombre': 'Raúl Rodrigo Lara',
		'edad': 32,
		'estatura': 1.9,
		'municipio': 'San José de Gracia ',
		'telefono': '044-55-28-43-76-23'
	},
	'jugador_7':{
		'nombre': 'Jaime Ordiales',
		'edad': 35,
		'estatura': 1.73,
		'municipio': 'Tepezalá ',
		'telefono': '044-55-28-43-76-22'
	},
	'jugador_8':{
		'nombre': 'Germán Villa',
		'edad': 27,
		'estatura': 1.94,
		'municipio': 'Xpujil ',
		'telefono': '044-55-28-43-76-21'
	},
	'jugador_9':{
		'nombre': 'Pável Pardo',
		'edad': 22,
		'estatura': 1.84,
		'municipio': 'Calkiní ',
		'telefono': '044-55-28-43-76-20'
	},
	'jugador_10':{
		'nombre': 'Francisco Palencia',
		'edad': 32,
		'estatura': 1.86,
		'municipio': 'Campeche ',
		'telefono': '044-55-28-43-76-19'
	},
	'jugador_11':{
		'nombre': 'Jesús Arellano',
		'edad': 19,
		'estatura': 1.97,
		'municipio': 'Candelaria ',
		'telefono': '044-55-28-43-76-18'
	},
	'jugador_12':{
		'nombre': 'Luis Hernández',
		'edad': 37,
		'estatura': 1.63,
		'municipio': 'Ciudad del Carmen ',
		'telefono': '044-55-28-43-76-17'
	},
	'jugador_13':{
		'nombre': 'Ramón Ramírez',
		'edad': 26,
		'estatura': 1.7,
		'municipio': 'Champotón ',
		'telefono': '044-55-28-43-76-16'
	},
	'jugador_14':{
		'nombre': 'Claudio Suárez',
		'edad': 25,
		'estatura': 1.62,
		'municipio': 'Escárcega ',
		'telefono': '044-55-28-43-76-15'
	}
}


# lista_de_alumnos es el nombre de la variable que almacenará mi dictionary multidimentsional
# este es una dictionary que almacena otros dictionaries...
# entre llaves estará el contenido de nuestro dictionary { }
# el nombre de nuestro elemento, la clave / key , se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key 
# entre comillas va el valor del elemento
# cada elemento del dictionary estará separado por una coma  ( , )
# dentro del dictionary , hay mas dictionaries.
# el contenido de cada dictionary está entre  llaves {}
# el nombre de nuestro elemento, la clave / key , se escribe entre comillas
# : los dos puntos asignan el valor a la clave / key 
# los números decimales y enteros no necesitan estar entre comillas
# las strings van ente comillas

Leer los valores de un dictionary

Una vez creado el dictionary, podemos tener acceso a los valores que almacena.

Para recuperar un elemento del dictionary utilizaremos el codigo:.

nombre_del_dictionary["nombre_del_elemento_en_el_dictionary"]

Ejemplo:


# creamos un dictionary

lista_de_alumnos = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}


#una vez creado el dictionary recuperamos un elemento  con:

lista_de_alumnos["nombre"]
# muestra en pantalla: Alain

lista_de_alumnos["apellido_paterno"]
# muestra en pantalla: García

lista_de_alumnos["apellido_materno"]
# muestra en pantalla: Gómez


Leer los valores de un dictionary

Si utilizamos una clave / key que no existe en el dictionary, Python marcará error.


# creamos un dictionary

lista_de_alumnos = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}




lista_de_alumnos["nacionalidad"]
# !no existe la clave / key  nacionalidad en el dictionary¡
# Python marcara error


Si utilizamos una clave / key  que no existe en el dictionary, Python marcará error.

Para recuperar un elemento de un dictionary que almacene lists podemos utilizar el siguiente código:

nombre_del_dictionary[clave]

Ejemplo:

mi_dictionary_con_listas = {

'portero':["Jorge Campos",34,1.63,"Palo Alto ","044-55-28-43-76-28"],

'lateral_izquierdo':["Joel Sánchez Ramos",28,1.92,"Pabellón de Arteaga ","044-55-28-43-76-26"],
'contencion':["Duilio Davino",38,1.80,"Rincón de Romos ","044-55-28-43-76-25"],
'defensa_central':["Claudio Suárez",25,1.62,"Escárcega ","044-55-28-43-76-15"],
'lateral_derecho':["Raúl Rodrigo Lara",32,1.90,"San José de Gracia ","044-55-28-43-76-23"],

'mediocampo':["Alberto García Aspe",27,1.94,"San Francisco de los Romo ","044-55-28-43-76-24"],
'volante_derecho':["Germán Villa",27,1.94,"Xpujil ","044-55-28-43-76-21"],
'volante_izquierdo':["Pável Pardo",22,1.84,"Calkiní ","044-55-28-43-76-20"],
'volante_de_enganche':["Ramón Ramírez",26,1.70,"Champotón ","044-55-28-43-76-16"],


'delantero':["Cuauhtémoc Blanco",32,1.68,"Jesús María ","044-55-28-43-76-27"],
'extremo_derecho':["Francisco Palencia",32,1.86,"Campeche ","044-55-28-43-76-19"],
'extremo_izquierdo':["Luis Hernández",37,1.63,"Ciudad del Carmen ","044-55-28-43-76-17"]


}


mi_dictionary_con_listas['portero']
# muestra en pantalla: ['Jorge Campos', 34, 1.63, 'Palo Alto ', '044-55-28-43-76-28']

recuperar un elemento de un dictionary  que almacene lists

Para recuperar el valor de un elemento de una lista dentro de un diccionary podemos utilizar el siguiente código:

nombre_del_dictionary[clave][numero_de_elemento_en_la_lista]

En el siguiente ejemplo se muestra como podemos acceder a un elemento en específico de la lista dentro del diccionary. Para ello hacemos referencia al número de elemento dentro de la lista. Ejemplo:

mi_dictionary_con_listas = {

'portero':["Jorge Campos",34,1.63,"Palo Alto ","044-55-28-43-76-28"],

'lateral_izquierdo':["Joel Sánchez Ramos",28,1.92,"Pabellón de Arteaga ","044-55-28-43-76-26"],
'contencion':["Duilio Davino",38,1.80,"Rincón de Romos ","044-55-28-43-76-25"],
'defensa_central':["Claudio Suárez",25,1.62,"Escárcega ","044-55-28-43-76-15"],
'lateral_derecho':["Raúl Rodrigo Lara",32,1.90,"San José de Gracia ","044-55-28-43-76-23"],

'mediocampo':["Alberto García Aspe",27,1.94,"San Francisco de los Romo ","044-55-28-43-76-24"],
'volante_derecho':["Germán Villa",27,1.94,"Xpujil ","044-55-28-43-76-21"],
'volante_izquierdo':["Pável Pardo",22,1.84,"Calkiní ","044-55-28-43-76-20"],
'volante_de_enganche':["Ramón Ramírez",26,1.70,"Champotón ","044-55-28-43-76-16"],


'delantero':["Cuauhtémoc Blanco",32,1.68,"Jesús María ","044-55-28-43-76-27"],
'extremo_derecho':["Francisco Palencia",32,1.86,"Campeche ","044-55-28-43-76-19"],
'extremo_izquierdo':["Luis Hernández",37,1.63,"Ciudad del Carmen ","044-55-28-43-76-17"]


}


mi_dictionary_con_listas['portero']
# muestra en pantalla: ['Jorge Campos', 34, 1.63, 'Palo Alto ', '044-55-28-43-76-28']


mi_dictionary_con_listas['portero'][0]
# muestra en pantalla: Jorge Campos


mi_dictionary_con_listas['portero'][3]
# muestra en pantalla: Palo Alto

mi_dictionary_con_listas['portero'][4]
# muestra en pantalla: 044-55-28-43-76-28


 acceder a un elemento en específico de la lista dentro del diccionario

Si tenemos una lista multidimensional que almacene varios dictionaries, también podemos recuperar su información. Ejemplo:

# creamos una lista multidimensional
mi_lista_multidimensional_con_diccionario = [

	  # el primer elemento de mi list, es un dictionary
		{ # creo un dictionary
			"nombre": "Jorge Campos", # un elemento de mi dictionary
			"edad": 34,
			"estatura": 1.63,
			"municipio": "Palo Alto",
			"telefono": "044-55-28-43-76-28",
		}
	,

	  # el segundo elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Cuauhtemoc Blanco",
			"edad": 32,
			"estatura": 1.68,
			"municipio": "Jesus Maria",
			"telefono": "044-55-28-43-76-27",
		}
	,
	 # el tercer elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Joel Sanchez Ramos",
			"edad": 28,
			"estatura": 1.92,
			"municipio": "Pabellon de Arteaga",
			"telefono": "044-55-28-43-76-26",
		}
	,

	 # el cuarto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Duilio Davino",
			"edad": 38,
			"estatura": 1.8,
			"municipio": "Rincon de Romos",
			"telefono": "044-55-28-43-76-25",
		}
	,
	 # el quinto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Alberto Garcia Aspe",
			"edad": 27,
			"estatura": 1.94,
			"municipio": "San Francisco de los Romo",
			"telefono": "044-55-28-43-76-24",
		}
	
]

mi_lista_multidimensional_con_diccionario[0]
# recuperaramos el elemento 0 de la lista multidimensional
# muestra en pantalla: 
# {'municipio': 'Palo Alto', 'estatura': 1.63, 'edad': 34, 'nombre': 'Jorge Campos', 'telefono': '044-55-28-43-76-28'}


mi_lista_multidimensional_con_diccionario[0]['nombre']
#con el primer [0] recuperaramos el elemento 0 de la lista multidimensional
# dentro de ese elemento 0, otra lista, recuperamos el primer elemento con el segundo [0]
# en ese momento tenemos ya acceso al dictionary y sus elementos
# con ['nombre'] recuperamos el valor de un elemento del dictionary, en este caso el nombre
# muestra en pantalla: 
# 'Jorge Campos'


mi_lista_multidimensional_con_diccionario[1]['nombre']
#con el primer [1] recuperaramos el elemento 1 de la lista multidimensional
# dentro de ese elemento 1, otra lista, recuperamos el primer elemento con el segundo [0]
# en ese momento tenemos ya acceso al dictionary y sus elementos
# con ['nombre'] recuperamos el valor de un elemento del dictionary, en este caso el nombre
# muestra en pantalla: 
# 'Cuauhtemoc Blanco'





Si tenemos una lista multidimensional que almacene varios dictionaries, también podemos recuperar su información.

Contar los elementos de un dictionary

Para saber cuantos elementos integran un dictionary, utilizamos la función LEN:

len(nombre_del_dictionary)

Ejemplo:


mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}

total_elementos = len(mi_dictionary_campechano)
# creamos la variable total_elementos
# almacenamos en ella el resultado de la función len
# len cuenta la cantidad de elementos en el dictionary

print(total_elementos)
# muestra en pantalla 14...
# el dictionary tiene 14 elementos

Para saber cuantos elementos integran un dictionary, utilizamos la función LEN

Para saber cuantos elementos integran un dictionary multidimensional, utilizamos la función:

len(nombre_del_dictionary)

Ejemplo:

# creamos una dicitonary multidimensional

lista_de_alumnos = {

	'jugador_1':{
		'nombre': 'Jorge Campos',
		'edad': 34,
		'estatura': 1.63,
		'municipio': 'Palo Alto ',
		'telefono': '044-55-28-43-76-28'
	},
	'jugador_2':{
		'nombre': 'Cuauhtémoc Blanco',
		'edad': 32,
		'estatura': 1.68,
		'municipio': 'Jesús María ',
		'telefono': '044-55-28-43-76-27'
	},
	'jugador_3':{
		'nombre': 'Joel Sánchez Ramos',
		'edad': 28,
		'estatura': 1.92,
		'municipio': 'Pabellón de Arteaga ',
		'telefono': '044-55-28-43-76-26'
	}
}





total_elementos = len(lista_de_alumnos)
# creamos la variable total_elementos
# almacenamos en ella el resultado de la función len
# len cuenta la cantidad de elemetos en el dictionary

print(total_elementos)
# muestra en pantalla 3...
# el dictionary tiene 3 elementos


Para saber cuantos elementos integran un dictionary multidimensional, utilizamos la función: len(nombre_del_dictionary)

Hacer una iteración en un dictionary

Es posible hacer una iteración en una dictionary con la ayuda de la función de control de flujo FOR.

Para hacer una iteración en una dictionary utilizaremos el codigo:.

for elemento in mi_diccionario.values():
	print(elemento)

Ejemplo:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}


for elemento in mi_dictionary_campechano.values():
#  hacemos una iteración elemento por elemento en nuestra lista
# elemento es una variable que almacena el valor del elemento
# for es una función de control de flujo
# for hace la iteración elemento por elemento
# in  permite definir que lista usaremos
#  lista_de_alumnos es la lista donde haremos la iteración
# : inicia nuestra función de control de flujo
	#muy importante, creamos una sangía para el contenido
	# de la función de control de flujo
	print(elemento)
	 # cada elemento lo mostramos en pantalla


Es posible hacer una iteración en un dictionarycon la ayuda de la función de control de flujo FOR.

De igual manera es posible hacer una iteración en una lista multidimensional que almacena varios dictionaries con la ayuda de la función de control de flujo FOR.

Ejemplo:

# creamos una lista multidimensional
mi_lista_multidimensional_con_diccionario = [

	  # el primer elemento de mi list, es un dictionary
		{ # creo un dictionary
			"nombre": "Jorge Campos", # un elemento de mi dictionary
			"edad": 34,
			"estatura": 1.63,
			"municipio": "Palo Alto",
			"telefono": "044-55-28-43-76-28",
		}
	,

	  # el segundo elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Cuauhtemoc Blanco",
			"edad": 32,
			"estatura": 1.68,
			"municipio": "Jesus Maria",
			"telefono": "044-55-28-43-76-27",
		}
	,
	 # el tercer elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Joel Sanchez Ramos",
			"edad": 28,
			"estatura": 1.92,
			"municipio": "Pabellon de Arteaga",
			"telefono": "044-55-28-43-76-26",
		}
	,

	 # el cuarto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Duilio Davino",
			"edad": 38,
			"estatura": 1.8,
			"municipio": "Rincon de Romos",
			"telefono": "044-55-28-43-76-25",
		}
	,
	 # el quinto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Alberto Garcia Aspe",
			"edad": 27,
			"estatura": 1.94,
			"municipio": "San Francisco de los Romo",
			"telefono": "044-55-28-43-76-24",
		}
	
]



for elemento in mi_lista_multidimensional_con_diccionario:
	print("Nombre: " + str(elemento['nombre']))
	print("Edad: " + str(elemento['edad']))
	print("Estatura: " + str(elemento['estatura']))
	print("Municipio: " + str(elemento['municipio']))
	print("Telefono: " + str(elemento['telefono']))
	print(" - - -  - - -  - - -  - - -  - - -  - - -  - - - ")

es posible hacer una iteración en una lista multidimensional que almacene dictionaries con la ayuda de la función de control de flujo FOR.

Un dolor de cabeza al programar en python, sobre todo para los que vienen de otros lenguajes de programación, son los espacios, sangrías, tabulaciones y saltos de línea para definir el contenido de las funciones y funciones de control de flujo.

Python no utiliza { } para definir el contenido de las funciones y funciones de control de flujo. Python utiliza sangrías / tabulaciones / espacios y saltos de línea.

Una sangría / tabulación / espacio o salto de línea mal colocados implicaría que nuestro código no haga nada, produzca un error u ofrezca un resultado completamente diferente.

Tómese como referencia el siguiente ejemplo:

lista_de_alumnos = [
"Jorge Campos",
"Alberto García Aspe",
"Claudio Suárez",
"Cuauhtémoc Blanco",
"Duilio Davino",
"Francisco Palencia",
"Germán Villa",
"Jaime Ordiales",
"Jesús Arellano",
"Joel Sánchez Ramos",
"Luis Hernández",
"Pável Pardo",
"Ramón Ramírez",
"Raúl Rodrigo Lara",
]



for elemento in lista_de_alumnos:
print(elemento)

Y su resultado:

Una sangría / tabulación mal colocada implicaría que nuestro código no haga nada, produzca un error u ofrezca un resultado completamente diferente.

¿Qué fué lo que pasó?

¿Por qué marco error?

¿Por qué no hizo la iteración?

Cuál es la diferencia entre este código:

lista_de_alumnos = [
"Jorge Campos",
"Alberto García Aspe",
"Claudio Suárez",
"Cuauhtémoc Blanco",
"Duilio Davino",
"Francisco Palencia",
"Germán Villa",
"Jaime Ordiales",
"Jesús Arellano",
"Joel Sánchez Ramos",
"Luis Hernández",
"Pável Pardo",
"Ramón Ramírez",
"Raúl Rodrigo Lara",
]



for elemento in lista_de_alumnos:
print(elemento)

Y este otro código:

lista_de_alumnos = [
"Jorge Campos",
"Alberto García Aspe",
"Claudio Suárez",
"Cuauhtémoc Blanco",
"Duilio Davino",
"Francisco Palencia",
"Germán Villa",
"Jaime Ordiales",
"Jesús Arellano",
"Joel Sánchez Ramos",
"Luis Hernández",
"Pável Pardo",
"Ramón Ramírez",
"Raúl Rodrigo Lara",
]



for elemento in lista_de_alumnos:
	print(elemento)

La diferencia es la sangría / tabulación / espacio o salto de línea que python utiliza para definir el contenido de las funciones y funciones de control de flujo.

Una sangría / tabulación / espacio o salto de línea mal colocados implicaría que nuestro código no haga nada, produzca un error u ofrezca un resultado completamente diferente.

Supongamos que tenemos una lista multidimensional con los datos de los alumnos y queremos hacer una iteración para mostrarlos.

Podríamos usar el siguiente código:

lista_de_alumnos = [
 ["Jorge Campos",34,1.63,"Palo Alto ","044-55-28-43-76-28"],
["Cuauhtemoc Blanco",32,1.68,"Jesus Maria ","044-55-28-43-76-27"],
["Joel Sanchez Ramos",28,1.92,"Pabellon de Arteaga ","044-55-28-43-76-26"],
["Duilio Davino",38,1.80,"Rincon de Romos ","044-55-28-43-76-25"],
["Alberto Garcia Aspe",27,1.94,"San Francisco de los Romo ","044-55-28-43-76-24"],
]

for elemento in lista_de_alumnos:
	print("Nombre: " + str(elemento[0]))
	print("Edad: " + str(elemento[1]))
	print("Estatura: " + str(elemento[2]))
	print("Municipio: " + str(elemento[3]))
	print("Telefono: " + str(elemento[4]))


es posible hacer una iteración en una lista multidimensional con la ayuda de la función de control de flujo FOR.

¡Funciona!

Pero si omitimos una tabulación / espacio / sangría.

lista_de_alumnos = [
 ["Jorge Campos",34,1.63,"Palo Alto ","044-55-28-43-76-28"],
["Cuauhtemoc Blanco",32,1.68,"Jesus Maria ","044-55-28-43-76-27"],
["Joel Sanchez Ramos",28,1.92,"Pabellon de Arteaga ","044-55-28-43-76-26"],
["Duilio Davino",38,1.80,"Rincon de Romos ","044-55-28-43-76-25"],
["Alberto Garcia Aspe",27,1.94,"San Francisco de los Romo ","044-55-28-43-76-24"],
]

for elemento in lista_de_alumnos:
	print("Nombre: " + str(elemento[0]))
	print("Edad: " + str(elemento[1]))
	print("Estatura: " + str(elemento[2]))
	print("Municipio: " + str(elemento[3]))
print("Telefono: " + str(elemento[4]))


¡Se acabó la magia!

Una sangría / tabulación mal colocada implicaría que nuestro código no haga nada, produzca un error u ofrezca un resultado completamente diferente.

Buscar un valor en un dictionary

Para buscar un valor en un dictionary, utilizamos el comando IN acompañado de la función values():

 valor_a_buscar in nombre_del_dictionary.values()

Ejemplo:

mi_dictionary_de_numeros = {
'id' : 1,
'peso' : 2,
'ancho' : 3,
'alto' : 4,
'precio' : 5,
'existencias' : 6 }

6 in mi_dictionary_de_numeros.values()
# buscal el valor 6 en el dictionary mi_dictionary_de_numeros
# resultado, true / verdadero
# el 6 está en el dictionary


15 in mi_dictionary_de_numeros.values()
# buscal el valor 15 en el dictionary mi_dictionary_de_numeros
# resultado, false / falso
# el 15 NO ESTÁ en el dictionary



Buscar un valor en un dictionary

Podemos buscar strings / cadenas de caracteres, en nuestro dictionary:


mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}



"Alain" in  mi_dictionary_campechano.values()
# buscal el valor "Alain" en mi_dictionary_campechano
# resultado, true / verdadero
# el valor "Alain" está en el dictionary


"Raúl Alonso Jiménez" in mi_dictionary_campechano.values()
# buscal el valor "Raúl Alonso Jiménez" en mi_dictionary_campechano
# resultado, false / falso
# el valor "Raúl Alonso Jiménez" NO ESTÁ en el dictionary


Podemos buscar strings / cadenas de caracteres, en nuestro dictionary

Si queremos buscar una clave / key en un dictionary, utilizamos el comando IN con la función keys() :

 clave_a_buscar in nombre_del_dictionary.keys()

Ejemplo:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}


"id" in mi_dictionary_campechano.keys()
# busca la clave / key  llamada id en mi_dictionary_campechano
# resultado, true / verdadero
# la clave / key  llamada id está en el dictionary


"nacionalidad" in mi_dictionary_campechano.keys()
# busca la clave / key  llamada nacionalidad en mi_dictionary_campechano
# resultado, FALSE / FALSO
# la clave / key  llamada nacionalidad  NO ESTÁ en el dictionary



Si queremos buscar una clave / key en un dictionary, utilizamos el comando IN con la función keys()

Buscar un valor en una lista que almacene diccionarios

Para buscar un valor en un diccionario dentro de una lista, utilizamos el comando IN junto con la función de control de flujo FOR. FOR nos permite hacer una iteración elemento por elemento de la list / lista.

Ejemplo:

# creamos una lista  que almacena dictionaries
mi_lista_con_diccionario = [

	  # el primer elemento de mi list, es un dictionary
		{ # creo un dictionary
			"nombre": "Jorge Campos", # un elemento de mi dictionary
			"edad": 34,
			"estatura": 1.63,
			"municipio": "Palo Alto",
			"telefono": "044-55-28-43-76-28",
		}
	,

	  # el segundo elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Cuauhtemoc Blanco",
			"edad": 32,
			"estatura": 1.68,
			"municipio": "Jesus Maria",
			"telefono": "044-55-28-43-76-27",
		}
	,
	 # el tercer elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Joel Sanchez Ramos",
			"edad": 28,
			"estatura": 1.92,
			"municipio": "Pabellon de Arteaga",
			"telefono": "044-55-28-43-76-26",
		}
	,

	 # el cuarto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Duilio Davino",
			"edad": 38,
			"estatura": 1.8,
			"municipio": "Rincon de Romos",
			"telefono": "044-55-28-43-76-25",
		}
	,
	 # el quinto elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Alberto Garcia Aspe",
			"edad": 27,
			"estatura": 1.94,
			"municipio": "San Francisco de los Romo",
			"telefono": "044-55-28-43-76-24",
		}
	
]

for elemento in mi_lista_con_diccionario:
# para cada dictionary anidado haremos: 
	if  "Alberto Garcia Aspe" in elemento.values() :
	  # si hay un elemento con el valor Alberto Garcia Aspe
		print(elemento)
		 # lo mostramos en pantalla

Buscar un valor en una lista multidimensional que almacene diccionarios

Agregar un elemento a un dictionary

Para agregar un elemento a un dictionary utilizamos la función UPDATE:

 mi_dictionary.update({"nueva_clave":"nuevo_valor"})

Ejemplo:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5
}

mi_dictionary_campechano.update({"edad":41})
# agrega la llave / key nacionalidad con el valor mexicana

mi_dictionary_campechano
# muestra en pantalla:
# {'edad': 41, 'apellido_paterno': 'Garcia', 'nombre': 'Alain', 'peso': 84, 'id': 1, 'alto': 1.74, 'apellido_materno': 'Gomez', 'calificacion': 8.5}


Para agregar un elemento a un dictionary  utilizamos la función UPDATE

La misma lógica aplica si queremos agregar un string / cadena de caracteres a nuestro dictionary:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}

mi_dictionary_campechano.update({"nacionalidad":"mexicana"})
# agrega la llave / key nacionalidad con el valor mexicana

mi_dictionary_campechano
# muestra en pantalla:
# {'nacionalidad': 'mexicana', 'apellido_paterno': 'Garcia', 'nombre': 'Alain', 'peso': 84, 'id': 1, 'alto': 1.74, 'apellido_materno': 'Gomez', 'calificacion': 8.5}

Eliminar un elemento en un dictionary

Para eliminar un elemento en un dictionary utilizamos la función DEL:

 del mi_dictionary[clave_a_borrar]

Ejemplo:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}

del mi_dictionary_campechano['nombre']
# elimina el elemento cuyo valor sea 1

mi_dictionary_campechano 
#mostrara en pantalla: 
# {'apellido_paterno': 'Garcia', 'peso': 84, 'id': 1, 'alto': 1.74, 'apellido_materno': 'Gomez', 'calificacion': 8.5}

Para eliminar un elemento en un dictionary utilizamos la función DEL

Modificar el valor de un elemento en un dictionary

Para modificar el valor de un elemento en un dictionary utilizamos el siguiente código:

 mi_dictionary[clave_a_modificar] = nuevo_valor

Ejemplo:

mi_dictionary_campechano = {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5
}

mi_dictionary_campechano['id']=41
#Actualizamos el valor del elemento cuya clave / key es id
# reemplazamos el valor original  1  con  41


mi_dictionary_campechano['id']
#muestra 41 

mi_dictionary_campechano
#muestra el dictionary actualizado

modificar el valor de un elemento en un dictionary utilizamos la función UPDATE

La misma lógica se aplica para una lista multidimensional que almacena dictionaries. Sólo es necesario precisar el elemento a actualizar:

 mi_lista[diccionario_a_modificar][clave_a_modificar] = nuevo_valor

Ejemplo:


mi_lista_con_diccionario = [

	  # el primer elemento de mi list, es un dictionary
		{ # creo un dictionary
			"nombre": "Jorge Campos", # un elemento de mi dictionary
			"edad": 34,
			"estatura": 1.63,
			"municipio": "Palo Alto",
			"telefono": "044-55-28-43-76-28",
		}
	,

	  # el segundo elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Cuauhtemoc Blanco",
			"edad": 32,
			"estatura": 1.68,
			"municipio": "Jesus Maria",
			"telefono": "044-55-28-43-76-27",
		}
	,
	 # el tercer elemento de mi list, es otro dictionary
		{ # creo un dictionary
			"nombre": "Joel Sanchez Ramos",
			"edad": 28,
			"estatura": 1.92,
			"municipio": "Pabellon de Arteaga",
			"telefono": "044-55-28-43-76-26",
		}
	
]

mi_lista_con_diccionario[0]['nombre'] = "Oscar 'El Conejo' Perez"
#Actualizamos el primer dictionary dentro de la lista
# reemplazamos el valor original  Jorge Campos  con  Oscar 'El Conejo' Perez

mi_lista_con_diccionario[0]['nombre']
# muestra  Oscar 'El Conejo' Perez


mi_lista_con_diccionario[0]['telefono'] = "01-800-4-33-20-00"
#Actualizamos el primer dictionary dentro de la lista
# reemplazamos el valor original  Jorge Campos  con  Oscar 'El Conejo' Perez

mi_lista_con_diccionario[0]['telefono']
# muestra  "01-800-4-33-20-00"



Modificar el valor de un elemento en una lista / list multidimensional

Copiar un dictionary

Para copiar un dictionary necesitamos importar el módulo / librería COPY y luego utilizamos la función DEEPCOPY:

 
import copy
#importar el módulo / librería COPY

mi_dictionary_copiado = copy.deepcopy(mi_dictionary)

Ejemplo:

import copy

mi_dictionary= {

'id' : 1,
'nombre' : "Alain",
'apellido_paterno' : "Garcia",
'apellido_materno' : "Gomez",
'peso' : 84,
'alto' : 1.74,
'calificacion' : 8.5

}

mi_dictionary_copia = copy.deepcopy(mi_dictionary)
# copiamos la lista en una nueva lista


mi_dictionary_copia["id"]
# recuperarmos el valor del primer elemento de  la lista copiada
# muestra 1

mi_dictionary["id"]
# recuperarmos el valor del primer elemento de  la  lista original
# muestra 1

Para copiar  un dictionary  necesitamos importar el módulo / librería COPY y luego utilizamos la función DEEPCOPY

Este ejemplo es parte de un tutorial más completo que puede consultarse:

Sitios de interés

Sitio oficial de Python


Comenta y opina este texto     Lee mi libro de visitas
© 1997-2018 Alain García Gómez
albegago@hotmail.com
Twitter: @feesgo
El vínculo a este documento es:

Compartir en facebook Compartir en twitter Compartir en whatsapp Rss

Puedes apoyar a este sitio invitándome a comer...

Este sitio utiliza cookies propias y de terceros para mejorar sus servicios. Si continua navegando, entendemos que acepta su uso. Política de Privacidad