Entre las muchas estructuras de datos en Python, las listas y los diccionarios son quizás las más comunes, esto podría deberse a su versatilidad. Podemos usar estas estructuras de diferentes maneras poderosas para representar muchos tipos de datos.
Las listas, como su nombre lo indica, son colecciones ordenadas de datos que se pueden acceder por índice. A diferencia de otros lenguajes de programación como Javascript, los datos no tienen que ser del mismo tipo. Esto significa que podemos tener listas que contengan cadenas, enteros, flotantes e incluso otras listas o diccionarios.
Resultado:
=== Iterando sobre la lista === rojo verde azul amarillo naranja morado === Imprimiendo uno de los colores haciendo referencia al índice === azul === Imprimiendo la lista después de agregar un color === ['rojo', 'verde', 'azul', 'amarillo', 'naranja', 'morado', 'negro']
Podemos también seleccionar un color aleatorio de la lista haciendo referencia al índice.
Resultado:
=== Imprimiendo un color al azar === azul
En el ejemplo anterior usamos la función len()
, esto obtiene la longitud de un elemento iterable y devuelve un valor int. Hay muchos más métodos que podemos aplicar a las listas, pero por ahora nos enfocaremos en los más comunes. Si quieres aprender más sobre los métodos disponibles, puedes consultar la documentación para la clase de lista en Python o usar la función dir()
para ver qué métodos están disponibles para ti.
Resultado:
=== Métodos de la lista === [‘add’, ‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘iadd’, ‘imul’, ‘init’, ‘init_subclass’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘mul’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘rmul’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]
Como se mencionó anteriormente, podemos agregar diferentes tipos de datos a una lista usando el método append()
, esto agregará los datos al final de la lista.
Resultado:
=== Imprimiendo la lista mixta después de agregar un nuevo elemento === [1, ‘dos’, 3.0, ‘cuatro’, 5, ‘seis’, 7.0, ‘ocho’, 9, [‘diez’, 11, 12.0], ‘trece’]
Y, como podemos ver en la salida de la función dir()
, también podemos ordenar la lista usando el método sort()
, invertir el orden de la lista usando el método reverse()
, y eliminar elementos de la lista usando el método remove()
.
Resultado:
=== Imprimiendo la lista de colores ordenada === [‘negro’, ‘azul’, ‘verde’, ‘naranja’, ‘morado’, ‘rojo’, ‘amarillo’] === Imprimiendo la lista de colores invertida === [‘amarillo’, ‘rojo’, ‘morado’, ‘naranja’, ‘verde’, ‘azul’, ‘negro’] === Imprimiendo la lista de colores después de eliminar el último elemento === [‘amarillo’, ‘rojo’, ‘morado’, ‘naranja’, ‘verde’, ‘azul’]
Similar a las listas, los diccionarios también son colecciones ordenadas de datos, pero a diferencia de las listas, los datos en un diccionario se acceden por clave, que es un identificador único para cada pieza de datos, y normalmente hacen referencia a un solo elemento en una colección. Esto puede representar una fila en una base de datos o una entrada en un conjunto de datos. Esto significa que si necesitas definir una lista de objetos, técnicamente tendrás una lista de diccionarios (que a su vez pueden contener otras listas).
Resultado:
=== Imprimiendo el horario === {‘Lunes’: ‘Ir al gimnasio’, ‘Martes’: ‘Hacer algo de programación’, ‘Miércoles’: ‘Ir al gimnasio’, ‘Jueves’: ‘Hacer algo de programación’, ‘Viernes’: ‘Ir al gimnasio’, ‘Sábado’: ‘Hacer algo de programación’, ‘Domingo’: ‘Ir al gimnasio’}
Como se muestra en el código anterior, un diccionario se utiliza típicamente para representar un conjunto de datos relacionados con un solo elemento, por ejemplo, un perfil de usuario o una lista de elementos relacionados con un solo objeto. Pero ¿qué sucede si queremos definir varios objetos relacionados entre sí, por ejemplo, una lista de usuarios o una lista de elementos relacionados con un solo usuario? Podemos definir una lista de diccionarios, donde cada diccionario contiene datos relacionados con un solo objeto, pudiendo acceder a un solo diccionario por el índice de la lista y luego acceder a los datos en el diccionario usando la clave.
Resultado:
=== Iterando sobre la lista de horarios ===
Horario para el usuario 0: {‘Lunes’: ‘comprimir’, ‘Martes’: ‘programar’, ‘Miércoles’: ‘introducir’, ‘Jueves’: ‘parsear’, ‘Viernes’: ‘conectar’, ‘Sábado’: ‘hackear’, ‘Domingo’: ‘calcular’}
Horario para el usuario 1: {‘Lunes’: ‘copiar’, ‘Martes’: ‘navegar’, ‘Miércoles’: ‘eludir’, ‘Jueves’: ‘sintetizar’, ‘Viernes’: ‘sintetizar’, ‘Sábado’: ‘navegar’, ‘Domingo’: ‘sintetizar’}
Horario para el usuario 2: {‘Lunes’: ‘sintetizar’, ‘Martes’: ‘generar’, ‘Miércoles’: ‘transmitir’, ‘Jueves’: ‘copiar’, ‘Viernes’: ‘hackear’, ‘Sábado’: ‘navegar’, ‘Domingo’: ‘programar’}
Eso es genial, ¿verdad? Pero ¿qué pasa si queremos un dato específico de un diccionario? Podemos especificar la clave que queremos acceder usando el operador []
, y se devolverá el valor de la clave. Para hacer esto, podemos iterar sobre la lista o definir un índice para el elemento que queremos acceder, por ejemplo, el perfil de usuario del primer usuario en la lista.
Resultado:
=== Obteniendo el horario para el primer usuario para el miércoles === introducir === Obteniendo el horario para el segundo usuario para el jueves === sintetizar
Recuerda, cada elemento en Python tiene una lista de métodos disponibles, podemos usar la función dir()
para ver qué métodos están disponibles para nosotros.
Resultado:
=== Métodos del diccionario === [‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’]
Resultado:
=== Iterando sobre la lista de horarios ===
Horario para el usuario 0: Lunes: comprimir Martes: programar Miércoles: introducir Jueves: parsear Viernes: conectar Sábado: hackear Domingo: calcular
Horario para el usuario 1: Lunes: copiar Martes: navegar Miércoles: eludir Jueves: sintetizar Viernes: sintetizar Sábado: navegar Domingo: sintetizar
Horario para el usuario 2: Lunes: sintetizar Martes: generar Miércoles: transmitir Jueves: copiar Viernes: hackear Sábado: navegar Domingo: programar