Colecciones en Python: Listas, Tuplas, Conjuntos y Diccionarios
Resumen
¿Cuáles son las principales colecciones en Python y sus características?
Cuando hablamos de manipular datos en Python, las colecciones juegan un papel crucial. Las listas, tuplas, conjuntos y diccionarios son las estructuras de datos más fundamentales y ofrecen variadas funcionalidades. A continuación, profundizaremos en cada una, explorando sus particularidades y casos de uso específicos.
¿Qué son las listas en Python?
Las listas son quizás la estructura de colección más versátil y usada en Python.
Naturaleza Dinámica: Pueden crecer o decrecer dinámicamente. Esto significa que puedes añadir o eliminar elementos sin una estructura rígida.
Índices Secuenciales: Operan con índices que comienzan en cero, lo que permite un manejo secuencial de los elementos.
Ordenamiento: Las listas se pueden ordenar mediante el método sort, adaptándose a diversos algoritmos dependiendo del problema a resolver.
Declaración de Listas: Puedes usar el constructor list() o las comprensiones para crear y poblar listas de manera condicional e iterativa.
Ejemplo de declaración de lista:
frutas =['manzana','banana','cereza']
¿Qué son las tuplas y por qué son útiles?
Las tuplas son una variante inmutable de las listas, útiles en contextos donde los datos no deben cambiar.
Inmutabilidad: Una vez creadas, no pueden cambiarse, lo que las hace ideales para almacenar datos constantes.
Implementación: Puedes crearlas simplemente con paréntesis, como mi_tupla = (1, 2, 3), o incluso omitir estos y separarlas solo con comas.
Uso Común: Suelen aplicarse para datos geográficos (coordenadas), números de identificación o valores predeterminados que no deben alterarse.
¿Qué son los conjuntos en Python y para qué se utilizan?
Los conjuntos o sets almacenan elementos únicos y ofrecen operaciones matemáticas rápidas.
Elementos Únicos: No aceptan duplicados, por lo que cualquier elemento añadido más de una vez es ignorado.
Acceso Rápido y Desordenado: Se accede a sus elementos rápidamente, y no tienen un orden específico.
Operaciones Matemáticas: Permiten realizar operaciones como intersección, unión, diferencia, entre otras.
Ejemplo de creación de conjunto:
ingredientes ={'carne','tortillas','salsa'}
¿Cómo funcionan los diccionarios en Python?
Los diccionarios son colecciones que almacenan pares de llave-valor, permitiendo un acceso rápido a los elementos.
Pares Llave-Valor: Cada elemento es un par, esto es, una llave que mapea a un valor asociado, ideal para datos como nombres con edades.
Estructura Desordenada: Aunque desordenados, permiten búsquedas y recuperaciones muy eficientes.
Implementación: Usualmente creados usando llaves {}, y pueden ser poblados con declaraciones directas.
Ejemplo de diccionario:
edad_personas ={'Héctor':31,'Ana':22}
¿Cómo participar y reforzar conocimientos?
Como parte de tu aprendizaje, es útil aplicar los conceptos en ejemplos prácticos. Te invitamos a compartir:
Casa uno de estos tipos de colecciones explicando un caso nuevo que no se haya mencionado.
Qué tipo de información almacenarías en ellos, considerando un contexto único y específico.
Explorar distintas aplicaciones es clave para integrar conocimientos y convertirte en un experto en Python. Sigue aprendiendo, corriendo riesgos y experimentando con los retos que te ofrecen estas estructuras de datos. ¡Hay un mundo de posibilidades esperando ser descubierto!
Es muy importante saber cuando usar una cierta colección, ya que de ello depende tanto el tamaño que ocupará en memoría como la velocidad en ciertas tareas.
De forma general es recomendable usar tuplas en lugar de listas siempre que no se requiera estar cambiando los valores, ya que ocupan menos espacio en memoría.
Así como usar sets o diccionarios para busqueda de un elemento, ya que son más rapidos.
Les comparto un código de cuanto pesan las diferentes estructuras de python
import sys
colecciones ={"list":list(),"tuple":tuple(),"dict":dict(),"set":set()}for name, value in colecciones.items():print(f'{name} = {sys.getsizeof(value)} bytes')
list =56 bytes
tuple =40 bytes
dict =232 bytes
set =216 bytes
Muchísimas gracias.
Buen aporte!
Resumen:
■■■■■■■
Colecciones Incorporadas en Python
Listas: Propósito general, de índices con tamaños dinámicos. Ordenables lista =[].
Usaria las listas para almacenar una serie de números, una lista de palabras,y básicamente cualquier cosa.
Tuplas: Inmutables, no se pueden añadir más elementos. Utiles para constantes por ejemplo coordenadas, direcciones. Es de tipo secuencial. tupla =()
Las usuaría cuando sé exactamente el tamaño que tendrán mis datos.
Conjuntos: Almacenan objetos no duplicados.(Teoría de conjuntos), son de acceso rápido, aceptan operaciones lógicas, son desordenados.set()conjunto={1,2,3,4}
Usaría un casteo entre conjuntos y listas cuando quiero eliminar duplicados de una lista.
Diccionarios: Pares de llaver valor, arrays asociativos (hash maps), son desordenados, y muy rápidos para hacer consultas. diccionario ={'Llave':"Valor"}
Los usaría para almacenar datos, listas, objetos que perfectamente pueden volverse un dataframe, o un defaultdict
Tu aporte es de lo mejor, gracias.
¿Existirá un método lúdico y nemotécnico para recordar todas estas características?
Lista: Listas para organizar las responsabilidades del día.
Tupla: Almacenar el Documento de Identidad del cliente.
Sets: Cursos que voy llevando.
Diccionario: Glosario con los nuevos términos que voy aprendiendo.
Excelentes ejemplos de uso!
Lo utilizaría para un negocio de comida
Listas: para los pedidos de comida, que platillo se necesita preparar
Tuplas: Para el tipo de alimentos que se preparan (postres, sopas, guarniciones, ensaladas, bebidas, etc..)
Conjuntos / Sets: Para colocar las colonias donde brindas servicio a domicilio
Diccionarios: Para colocar el precio de los alimentos que se venden
Muy buen razonamiento y bien aplicado.
Comó dato curioso:
A partir de la versión de python 3.7 los diccionarios ya estan ordenados.
Lo que significa que al agregar un nuevo item, se colocará al final.
Buen aporte :D
Las colecciones más utilizadas, son iterables
.
He visto hasta el momento que las listas seguidas de los diccionarios se llevan de calle a las otras dos colecciones.
Los sets hasta el final, casi no los he visto aplicados y en muchos videos ni se mencionan. Es bueno tenerlos aquí representados. Son bastante útiles para obtener valores individuales de listas con valores duplicados. Otros casos de uso.
Diccionarios = Consultar que profesor imparte un curso específico
Para inicializar un conjunto (creará conjunto vacío) usar la funcionalidad set(), no con {} (esto es para crear inicializar diccionarios)
No es posible ingresar por índices porque no tiene orden.
.
Puedes revisar la documentación sobre SETS
lol ={1,2,3,4,5,6}print(type(lol))
<class'set'>
Así es, si se inicializa un conjunto vacío con el par de llaves {}, obtienes un diccionario vacío. Buen aporte.
Reto
Listas:
Almacenar una lista de elementos en un orden específico, como una lista de tareas pendientes o una lista de compras.
Almacenar una secuencia de valores numéricos para realizar cálculos, como una serie de temperaturas o precios.
Almacenar una secuencia de elementos que pueden cambiar con el tiempo, como una lista de amigos en una red social.
Tuplas:
Almacenar una colección de elementos que no deben cambiar, como las coordenadas (x, y) de un punto en el espacio.
Almacenar una secuencia de elementos que deben mantenerse juntos, como una fecha (año, mes, día).
Devolver múltiples valores desde una función.
Conjuntos:
Eliminar elementos duplicados de una lista.
Realizar operaciones matemáticas de conjuntos, como uniones, intersecciones y diferencias.
Verificar si un elemento es miembro de un conjunto.
Diccionarios:
Almacenar relaciones clave-valor, como un diccionario de palabras y sus definiciones.
Almacenar datos estructurados, como información sobre un usuario en una red social (nombre, edad, amigos, etc.).
Contar la frecuencia de elementos en una colección.
déjame adivinar ChatGPT???
En un sitio dedicado a libros usando como ejemplo la saga literaria: Narnia de Lewis, usaría:
_
Tuplas para definir el nombre de la saga y el autor, datos inmutables.
saga_info =('Narnia','C.S.S Lewis')
Diccionarios para almacenar la información de cada libro de la saga (Varían):
libro_info ={'titulo':"El sobrino del mago",'paginas':304,'libro-numero':1,'fecha_publicacion':"1955",'edicion':4}
Sets para almacenar las diferentes editoriales (Varían pero no se repiten):
editoriales_libro ={"Alfaguara","Minotauro"}
Listas para las etiquetas de categoría (Porque se podrían agregar más):
etiquetas =["Ficción","Fantasía"]
Algunas cosas para las que usaría un
List
Una lista ordenada de los nombres de corredores de una carrera. El primer nombre es el corredor que llegó primero. Puedo ir creando la lista conforme van llegando los corredores. Puedo quitar un corredor si es descalificado.
Tuplas
Podría usar tuplas para guardar una "sparse matrix" que es una matriz en la que la mayoría de sus entradas son 0, entonces lo que se hace es que guardas el valor de las celdas que no son cero junto con sus índices (i,j), los índices no cambian así que esa información puede ser una tupla.
Conjunto
Podría usar conjuntos para encontrar los ids de usuarios que estéb repetidos en dos conjuntos que provengan de consultas diferentes. set_usuarios1.intersection(set_usuarios2)
Diccionarios
Estos se usan un montón. Podría usar un diccionario para guardar factores de conversión de diferentes unidades de distancia a metros. Así si busco conversiones["ft"] obtendría 0.3048 que es el factor de conversión de ft -> m
Las listas son para cosas que tienen mucho movimiento, cambian y necesita mantenerse la independencia.
Las tuplas son para cosas más estáticas.
Los sets es para mantener registros únicos y comparaciones lógicas
Los diccionarios para tener datos asociados
En ese orden de ideas, voy a pensarlo en el cuidado de las plantas.
Los diccionarios los puedo usar para agrupar bajo tipos de plantas: {'arboles': {'pino', 'guayacan'}} -> y utilizo los sets para mantener las especies únicas. En las tuplas podemos almacenar cosas que son fijas para estas plantas: intensidad de riego, iluminación, temperatura recomendada y por último, en las listas podemos registrar el crecimiento de la planta cada cierto tiempo, [20, 25, 30] -> podemos mantener un registro constante de los últimos 6 meses, borrando los registros después de que se haya pasado el limite.
Oigan. Una duda respecto a si los diccionarios están desordenados. En serio lo están? Según tengo entendido al agregar un ítem, estos conservarían el orden de inserción de sus elementos. También podríamos usar sorted(diccionario.items()) que si bien el output es una lista de tuplas, lo podemos volver a convertir en un diccionario dict(sorted(diccionario.items()))
Se referirá a versiones anteriores a la 3.7? o entendí algo mal? :/
Comparto casos prácticos en donde he utilizado cada una de las colecciones de python en procesamiento de datos de Salud:
Listas: almacenar los diagnósticos de un paciente. En la lista 1 se guarda el diagnóstico y en una segunda lista se guarda la fecha del diagnóstico / visita. Por lo que es posible que la misma enfermedad este múltiples veces.
Sets: para guardar los ids de las personas con algún diagnóstico de diabetes durante su periodo de seguimiento y luego con operaciones lógicas identificar por ejemplo: personas con diabetes O hipertensión, con diabetes Y hipertensión
Diccionarios: guardar cómo llave el id del paciente y como valor una tupla con las enfermedades diagnósticadas
😄
Diccionario:
no es como tal lo que pidió el profe, pero recuerdo que sufriiiii mucho, cuando tuve el reto de convertir unos arrays en diccionarios
### ¿En qué casos usuarías cada estrcutura? ¿Qué tipo de información guardarías?
a. Listas: para una tienda en linea, para poder tener un control de los distintos tipos de producto, meteria listas que contengan strings para el nombre, codigo de barras, numeros para los precios y boleanos para saber si esta disponible o no el producto.
b. Tuplas: para la misma tienda en linea, para clasificar en secciones los diferentes productos, donde se definen de forma anticipada los tipos de productos que se venderan como estrategia de negocio y se supone que no cambiaran en el corto ni mediano plazo, en este caso serian puros strings y las categorias podrian ser, para una tienda en linea de productos deportivos: calzado, accesorios, conjuntos de ropa, pants, jerseys, shorts, etc.
c. Conjuntos o sets: para el carrito de compras en la tienda de ropa deportiva en el que en la mayor parte de los casos solo compraras un tipo de producto en especifico, quieres evitar duplicados al momento de hacer la transaccion de venta, y este tipo de estructuras puede ser un buen candado para evitar compras duplicadas, podrias ser por sku para ventas a individuos, en el caso de ventas a otras empresas o asociaciones deportivas, se podria vender con skus repetidos.
d. Diccionarios: para la tienda de articulos deportivos, lo usaria para guardar la informacion de cada usuario, como su nombre (strings), direccion (strings), edad(number), etc.
Lista: un check-list, evidentemente. Tupla: Documentos de identidad de usuarios registrados. Conjuntos: Bases de datos de usuarios. Diccionarios: gestión de archivo config dentro de un proyecto, por ejemplo.