Elige contenedores según cómo lees, actualizas y recorres los datos, no por costumbre. La estructura incorrecta cuesta claridad y rendimiento asintótico; la correcta hace que el código sea más corto y rápido sin micro-optimización.
# olor: búsqueda lineal repetidaif item in big_list: # O(n) cada vez# arreglo: construir set una vezseen = set(big_list)if item in seen: # O(1) en promedio
list como set - if x in items en una lista grande en un bucle → O(n²). Arreglo: Preconstruir set(items).
dict cuando una lista de pares es suficiente - Los registros de dos elementos a veces son mejores como tuplas en una lista. Arreglo: Simplificar hasta que se necesite búsqueda por clave.
pandas para 20 filas - Pesada importación y sobrecarga de API. Arreglo: Diccionario/lista simple hasta cientos de filas o operaciones de columna.
OrderedDict por defecto - Innecesario ya que dict está ordenado. Arreglo: Diccionario simple a menos que move_to_end.
Heap prematuro - Cinco elementos ordenados una vez → sorted. Arreglo: heap cuando k << n o en streaming.