Lista vs tupla vs set vs diccionario en Python

Actualizado el: 11/07/2026
Tempo de leitura: 5 minutos
Logo do Python com símbolos de lista, tupla e dicionário

Python ofrece varias estructuras de datos integradas para guardar colecciones. Las más importantes son listas, tuplas, sets y diccionarios. Todas pueden contener varios valores, pero se comportan de manera distinta respecto al orden, la mutabilidad, los duplicados y la forma de buscar información. Elegir la estructura correcta simplifica el código y evita conversiones innecesarias.

Para ampliar conceptos, consulta las guías sobre listas, tuplas, sets, diccionarios y bucles. La documentación oficial de estructuras de datos y la referencia oficial de tipos integrados explican su comportamiento con detalle.

Resumen rápido

  • Lista: ordenada, mutable y admite duplicados.
  • Tupla: ordenada, inmutable y admite duplicados.
  • Set: colección de valores únicos, sin acceso por índice.
  • Diccionario: asociación entre claves únicas y valores.

Estas definiciones son el punto de partida, pero la decisión real depende de cómo vas a consultar y modificar los datos.

Listas

frutas = ["manzana", "pera", "manzana"]
frutas.append("naranja")
frutas[0] = "fresa"

Una lista mantiene el orden de inserción, permite repetir valores y puede modificarse. Es apropiada para secuencias de tareas, productos, resultados, mensajes o cualquier colección cuyo orden importe.

Los elementos se consultan por índice:

print(frutas[0])
print(frutas[-1])
print(frutas[1:3])

Entre sus métodos más usados están append, extend, insert, remove, pop, sort y reverse.

Tuplas

coordenada = (10, 25)
nombre, edad = ("Ana", 30)

Una tupla también conserva el orden y admite duplicados, pero no permite sustituir, añadir o eliminar elementos después de su creación. Es útil cuando un grupo de valores representa una unidad fija: coordenadas, dimensiones, colores RGB o resultados múltiples.

def limites(valores):
    return min(valores), max(valores)

minimo, maximo = limites([4, 2, 9])

El retorno parece múltiple, pero en realidad es una tupla.

Sets

etiquetas = {"python", "web", "python"}
print(etiquetas)

El duplicado desaparece. Un set es ideal para unicidad, pertenencia y operaciones matemáticas:

usuarios_a = {1, 2, 3}
usuarios_b = {3, 4, 5}

print(usuarios_a | usuarios_b)  # unión
print(usuarios_a & usuarios_b)  # intersección
print(usuarios_a - usuarios_b)  # diferencia

No debes depender del orden visual ni intentar acceder con set[0]. Para añadir y eliminar valores usa add, update, remove y discard.

Diccionarios

usuario = {
    "nombre": "Ana",
    "edad": 30,
    "activo": True,
}

Un diccionario relaciona claves con valores. Las claves son únicas y deben ser hashables. Los valores pueden ser de cualquier tipo.

print(usuario["nombre"])
print(usuario.get("telefono", "No disponible"))
usuario["edad"] = 31
usuario["ciudad"] = "Madrid"

Los diccionarios son apropiados para registros, configuraciones, índices, contadores y datos JSON.

Orden

Las listas y tuplas tienen un orden explícito. Los diccionarios conservan el orden de inserción, aunque el acceso principal se realiza mediante claves. Los sets no deben usarse cuando el orden sea parte del significado.

Si necesitas valores únicos y ordenados, puedes combinar estructuras:

valores = [3, 1, 3, 2, 1]
unicos_en_orden = list(dict.fromkeys(valores))

Mutabilidad

Listas, sets y diccionarios son mutables. Las tuplas son inmutables. La mutabilidad afecta las asignaciones:

a = [1, 2]
b = a
b.append(3)
print(a)  # [1, 2, 3]

a y b apuntan al mismo objeto. Para obtener otra lista utiliza a.copy() o un slicing. Si hay objetos anidados, una copia superficial puede no ser suficiente.

Duplicados

Listas y tuplas admiten duplicados. Los sets eliminan valores repetidos. Los diccionarios no pueden tener dos claves idénticas; una asignación posterior sustituye el valor anterior.

datos = {"a": 1, "a": 2}
print(datos)  # {'a': 2}

Los valores de un diccionario sí pueden repetirse.

Búsqueda y pertenencia

if "python" in etiquetas:
    print("Encontrado")

if "nombre" in usuario:
    print("Existe la clave")

La pertenencia en sets y diccionarios suele ser muy eficiente porque utilizan tablas hash. En una lista o tupla, Python normalmente recorre los elementos hasta encontrar el valor.

No conviertas automáticamente una lista pequeña a set si solo harás una comprobación. La creación también tiene un coste. La decisión depende del tamaño y de la frecuencia de búsquedas.

Elementos hashables

Los elementos de un set y las claves de un diccionario deben ser hashables. Strings, números y tuplas formadas por valores hashables suelen cumplir esta condición. Las listas y diccionarios no pueden ser claves:

coordenadas = {(10, 20), (30, 40)}
indice = {(10, 20): "Madrid"}

Una tupla que contiene una lista tampoco es hashable.

Comprensiones

cuadrados_lista = [n * n for n in range(5)]
cuadrados_set = {n * n for n in range(5)}
cuadrados_dict = {n: n * n for n in range(5)}

No existe una comprensión específica de tuplas. Una expresión entre paréntesis produce un generador; para construir una tupla usa tuple(...).

Conversión entre estructuras

lista = [1, 2, 2, 3]
tupla = tuple(lista)
conjunto = set(lista)
otra_lista = list(conjunto)

Las conversiones pueden perder información. Al convertir a set desaparecen duplicados y el orden original deja de ser una garantía útil. Al convertir un diccionario a lista obtienes sus claves:

claves = list(usuario)
pares = list(usuario.items())

Cuándo usar una lista

Usa una lista cuando necesites mantener una secuencia modificable, acceder por posición, ordenar, añadir elementos o conservar duplicados. Ejemplos: carrito de compras, cola simple, historial, resultados de una consulta y pasos de una receta.

Cuándo usar una tupla

Usa una tupla cuando los valores formen un registro pequeño y fijo, cuando quieras dejar clara la intención de no modificarlo o cuando necesites una clave compuesta. Para registros con muchos campos, considera NamedTuple, dataclasses o clases normales.

Cuándo usar un set

Usa un set para eliminar duplicados, comparar grupos, encontrar intersecciones o realizar muchas pruebas de pertenencia. Ejemplos: permisos, etiquetas, identificadores procesados y palabras prohibidas.

Cuándo usar un diccionario

Usa un diccionario cuando cada valor se identifique mediante una clave significativa. Ejemplos: usuario por correo, precio por producto, configuración por nombre y contador por palabra.

Estructuras anidadas

usuarios = [
    {
        "id": 1,
        "nombre": "Ana",
        "roles": {"editor", "autor"},
    },
    {
        "id": 2,
        "nombre": "Luis",
        "roles": {"lector"},
    },
]

Una lista conserva el orden de usuarios, cada diccionario representa un registro y cada set evita roles duplicados. Las estructuras pueden combinarse según el significado.

Ejemplo práctico: inventario

productos = {
    "A100": {"nombre": "Teclado", "precio": 50.0, "stock": 4},
    "B200": {"nombre": "Ratón", "precio": 20.0, "stock": 8},
}

codigos = set(productos)
ordenados = sorted(productos.items(), key=lambda item: item[1]["precio"])
resumen = (len(productos), sum(p["stock"] for p in productos.values()))

El diccionario permite buscar por código, el set representa identificadores únicos, la lista devuelta por sorted conserva el orden y la tupla resume dos valores fijos.

Errores frecuentes

Entre los errores habituales están usar una lista como clave, esperar orden estable en un set, modificar una colección mientras se recorre, confundir {} con un set vacío y crear copias superficiales de datos anidados. Recuerda que {} crea un diccionario vacío; para un set vacío usa set().

Conclusión

No existe una estructura universalmente mejor. La lista representa una secuencia mutable; la tupla, un grupo fijo; el set, valores únicos; y el diccionario, asociaciones clave-valor. Elige según el significado, la forma de acceso, la necesidad de cambios y la presencia de duplicados. Una buena elección hace que el código explique por sí mismo cómo deben utilizarse los datos.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Símbolo de repetição ao lado do logotipo do Python pensativo, representando o conceito de loops na programação em Python.
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles en Python: for y while explicados con ejemplos

    Aprende bucles for y while en Python con range, enumerate, zip, break, continue, else, comprensiones, generadores y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    ícone de loop com o texto 'While' abaixo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles while en Python: guía práctica para principiantes

    Aprende bucles while en Python con condiciones, validación, menús, break, continue, else, centinelas, reintentos y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Imagem de um quadro negro com várias interrogações no lugar de lâmpadas, e uma lâmpada conectada no meio
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    If, elif y else en Python: guía de decisiones

    Aprende if, elif y else en Python con comparaciones, operadores lógicos, validación, rangos, menús, retornos tempranos y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Manipulação de dados JSON em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    JSON en Python: leer, escribir y validar datos

    Aprende JSON en Python con load, loads, dump, dumps, archivos UTF-8, validación, APIs, Decimal, fechas y escritura segura.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Homem pensando à frente de um notebook com código de programação
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Indentación en Python: guía clara para principiantes

    Aprende indentación en Python, cuatro espacios, bloques, IndentationError, TabError, errores lógicos y configuración correcta del editor.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Programador pensnado em frente à vários monitores com código na tela
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    15 ejercicios de Python para principiantes con soluciones

    Practica Python con 15 ejercicios resueltos sobre entrada, condiciones, bucles, funciones, listas, diccionarios, archivos y validación.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026