Listas de diccionarios
Recordemos nuestro diccionario de estudiantes:
# Diccionario de estudiantes
estudiantes = {
'Juan': 'Electricidad',
'María': 'Mecánica',
'Pedro': 'Electrónica'
}
En este momento tiene tres elementos, cada uno con su clave y valor.
¿Qué pasaría si tuviéramos más información sobre cada uno de nuestros estudiantes de la escuela técnica?
Esto es algo común. Si estás desarrollando un programa que funciona como una base de datos de estudiantes, profesores o cualquier otro tipo de persona, es fácil imaginar que tendrás una gran cantidad de datos sobre cada individuo en tu programa.
Para ilustrar esto, imaginemos que cada estudiante de nuestra escuela técnica, además de su nombre y especialidad, también tiene una habilidad especial. Esta habilidad especial podría ser algo único que el estudiante ha desarrollado durante su formación técnica.
El punto aquí es que queremos asociar a cada estudiante más de un valor distintivo: su nombre, su especialidad y su habilidad especial, en este caso.
Antes, teníamos una estructura de datos que se veía así:
Nombre | Especialidad |
---|---|
Juan | Electricidad |
María | Mecánica |
Pedro | Electrónica |
Esta estructura de datos representa un único diccionario.
Pero ahora queremos agregar una tercera columna, que represente la habilidad especial de cada estudiante:
Nombre | Especialidad | Habilidad especial |
---|---|---|
Juan | Electricidad | Soldadura |
María | Mecánica | Dibujo técnico |
Pedro | Electrónica | Ninguna |
Esta estructura de datos representa una lista de diccionarios:
- La lista contendría a cada estudiante y sus datos. Es decir, cada elemento de la lista representaría a cada estudiante; y
- cada elemento de la lista estaría conformado por un diccionario, una colección de pares clave-valor (un par por cada columna), con cada clave y valor para cada estudiante.
¿Cómo debiéramos representar esto en Python?
Sintaxis
Esta es la manera de escribir en Python una lista de diccionarios:
``` py title="Python" linesnum="1"
Lista de diccionarios de estudiantes
estudiantes = [ {"nombre": "Juan", "especialidad": "Electricidad", "habilidad especial": "Soldadura"}, {"nombre": "María", "especialidad": "Mecánica", "habilidad especial": "Dibujo técnico"}, {"nombre": "Pedro", "especialidad": "Electrónica", "habilidad especial": None} ] ```
Analicemos la estructura de datos que acabamos de definir y que se encontrará en la memoria de la computadora cuando se ejecute el programa:
-
Tenemos una variable llamada
estudiantes
.
¿Qué tipo de dato esestudiantes
?
Es una lista.¿Cómo sé que es una lista?
Porque está definida con un corchete al principio (línea 2) y otro corchete al final (línea 6). -
¿Qué hay en esta lista?
En principio 3 elementos (líneas 3, 4 y 5). -
¿Cómo sé que son 3 elementos?
Porque, aunque aún no analizamos que tipo de dato es cada uno de estos elementos, podemos ver que comienzan con un símbolo de apertura y terminan con un símbolo de cierre que se utilizan para agrupar datos.
Y que entre estos símbolos hay una coma (al final de las líneas 3 y 4) que separa cada uno de los 3 elementos identificados.
El tercer elemento también debiera terminar con una coma, pero como no hay nás elementos después de este, no es necesaria incluirla. -
Ahora si, ¿Qué tipo de dato es cada uno de estos 3 elementos?
Es un diccionario. Una colección de pares clave-valor.¿Cómo sabemos que es un diccionario?
Porque cada uno de estos elementos comienza con una llave al principio y termina con una llave al final. -
Pero, ¿cuántos pares de clave-valor tiene cada diccionario? Tres.
Las palabras clave son "nombre", "especialidad" y "habilidad especial". Y cada palabra clave tiene 1 valor asociado.
Para que esta estructura funcione esto debe ser así. Todos los diccionarios deben poseer las mismas palabras clave. Lo que variará (o no) será el valor asociado para cada una de ellas.
Recuerda que las palabras clave deben ser únicas dentro de un mismo diccionario. Si no, sería imposible diferenciar cada elemento.Así, para el primer diccionario tenemos para las palabras clave "nombre", "especialidad" y "habilidad especial" los valores "Juan", "Electricidad" y "Soldadura" respectivamente.
Para el segundo diccionario tenemos para las palabras clave "nombre", "especialidad" y "habilidad especial" los valores "María", "Mecánica" y "Dibujo técnico" respectivamente.
Y para el tercer diccionario tenemos para las palabras clave "nombre", "especialidad" y "habilidad especial" los valores "Pedro", "Electrónica" y
None
respectivamente.
Notemos que Pedro tieneNone
como valor para su Habilidad especial. Esto podría indicar que aún no ha desarrollado una habilidad especial o que no tenemos esa información.
En este caso, la habilidad especial de Pedro es
None
porque no tiene una habilidad especial.Presta atención que, a diferencia del resto de los valores asociados a las claves,
None
no lleva comillas. Esto es porqueNone
es una palabra clave especial en Python que representa la "nada". Si le pones comillas, estarías creando un string con la palabra "None" en lugar de asignarle a la claveHabilidad especial
el valorNone
.
¡Para recordar!
Hay una palabra clave especial en Python que representa la "nada".
None
, con la primera letra en mayúsculas, representa la ausencia de un valor. Y es el "no" tipo de dato que deberás usar siempre que una variable deba existir pero no contener ningún valor.
Ten presente que Python, por ser un lenguaje dinámico, no requiere que declares el tipo de dato de una variable antes de asignarle un valor. Por lo tanto, None
es la manera de indicar que una variable existe, pero no tiene un valor asignado.