Command Palette

Search for a command to run...

Compare dos listas: busque elementos comunes, elementos únicos y duplicados

Compare dos listas: busque elementos comunes, elementos únicos y duplicados

T
Toolz Team
|Jul 21, 2026|18 Min Lectura

Parte de la colección Diferencia y compara

Comparar dos listas

Compare dos listas para encontrar elementos comunes, elementos únicos de cada lista y duplicados dentro de una lista. Coincidencia sin distinción entre mayúsculas y minúsculas, cualquier delimitador, operaciones de conjunto instantáneo. 100% del lado del cliente.

Usar Comparar dos listas

Un ingeniero de soporte me preguntó una vez por qué cuarenta clientes habían recibido dos veces un correo electrónico de renovación. La respuesta tardó una hora en encontrarse y fue completamente mundana: la lista de campañas se había elaborado pegando una exportación debajo de otra, y en ambas existían cuarenta direcciones. Nadie había verificado, porque verificar significaba mirar dos mil filas o escribir una VLOOKUP que la mitad del equipo no lo hizo 't confía. Así que nadie pasó, y a las mismas cuarenta personas les dijeron dos veces que su tarjeta estaba a punto de ser cargada.

Esa es la forma de este problema. Conciliar dos listas es una de las cosas más comunes que cualquiera hace con los datos, y es lo suficientemente aburrido como para que la gente se la salte o lo haga mal. El instinto suele ser buscar una herramienta de diferencias, pegar ambas listas y entrecerrar los ojos ante la salida coloreada, lo que falla inmediatamente, porque una diferencia responde a una pregunta que no hiciste 't preguntar. O vas a una hoja de cálculo y empiezas a ensamblar MATCH/COUNTIF fórmulas, que funcionan pero tardan diez minutos y producen un artefacto que usted ' Nunca lo reutilizaré.

La operación que realmente desea tiene un nombre y es 's más antigua que cualquiera de las herramientas: establecer aritmética. Intersección, diferencia, unión. Construyo [Toolz.dev](/ y pongo un navegador basado en herramienta de comparación de listas allí, pero esta guía trata sobre los conceptos que se encuentran debajo: por qué se debe ignorar el orden, qué caso se rompe silenciosamente y cómo elegir entre esto y una diferencia.

TL;Dr: Para comparar dos listas, trate cada una como un conjunto desordenado y calcule la intersección (elementos en ambos), las dos diferencias (elementos solo en A, elementos solo en B) y los duplicados dentro de cada lista. Ignore el orden por completo: una diferencia de línea es la herramienta incorrecta porque es posicional ', por lo que reordenar una lista hace que casi todas las filas parezcan cambiadas. Doble el estuche para identificadores como correos electrónicos pero conserve el texto original en la salida, recorte los espacios en blanco antes de comparar y hágalo en el navegador, ya que las listas que las personas concilian suelen ser datos de clientes.

¿Qué preguntas responde realmente comparar dos listas?

Una vez que veas las operaciones nombradas, las formas se vuelven obvias. Dadas la lista A y la lista B:

  • Intersección- ¿qué y #39;s en ambos? ¿Qué suscriptores también son clientes que pagan? Cuáles de los SKU del mes pasado y #39;s todavía están en este catálogo del mes & #39;s.
  • A menos B- ¿qué y#39;s sólo en A? ¿Qué usuarios del CRM nunca llegaron a facturar. Qué archivos existen localmente pero no en el servidor.
  • B menos A- ¿qué's sólo en B? La misma pregunta en la otra dirección, y it's a distinto pregunta. Faltan facturación y faltan CRM son dos errores distintos con dos causas distintas.
  • Diferencia simétrica- ¿qué y#39;s en exactamente una lista? La unión de ambas diferencias: todo lo que no coincidió, independientemente de la dirección. Este es el "what's desincronizado?" pregunta.
  • Unión- todo de cualquiera de las listas, deduplicado. La fusión, realizada correctamente.
  • Duplica dentro de una lista- ¿qué y#39; se repite solo dentro de A? Este es ' No es una comparación en absoluto, pero es ' siempre es la pregunta que resulta que necesita, porque es ' es lo que causa los envíos dobles y la facturación doble.

Vale la pena separar este último. La coincidencia entre listas y la duplicación dentro de la lista son independientes: una dirección puede aparecer dos veces en A y también aparecen en B. Las herramientas que solo informan resultados entre listas no logran el fracaso que cuesta dinero.

Todo aquí se asigna directamente a las operaciones que ya conoce de SQL - INTERSECT, EXCEPT, UNION- y en fórmulas de hojas de cálculo. El valor de una herramienta dedicada es 't que hace algo que puedes 't; it's que las seis respuestas aparecen de una pasta, en lugar de seis fórmulas diferentes.

¿por qué una herramienta de diferencias es la elección incorrecta para comparar listas?

Este es el error que más veo, y vale la pena ser preciso sobre "comparar dos listas" y "diff dos archivos" suenan como sinónimos.

Una diferencia es posicional. Los algoritmos Diff calculan el script de edición mínimo: la secuencia más corta de inserciones y eliminaciones que convierte una secuencia en otra. Eso' es el modelo correcto para el código fuente y la prosa, donde está la línea 40 que sigue a la línea 39 significativo. Mover una función y una diferencia informa correctamente que movió una función.

Una lista no tiene un orden significativo. La fila 300 en su exportación CRM no tiene relación alguna con la fila 300 en su exportación de facturación. Ellos' Hay dos bolsas de artículos que se escriben en cualquier secuencia que devuelva la base de datos.

Introduzca datos desordenados en un algoritmo posicional y obtendrá ruido. Tome dos listas con contenidos idénticos, ordene una de ellas y difíalas:

List A          List B
alice           bob
bob             alice
carol           carol

Un diferencial informa eso alice fue eliminado y vuelto a agregar, o eso bob movido: algún cambio proporcional a cuán diferentes están ordenados los dos. La respuesta correcta es nada cambió. Cada elemento está en ambas listas. Los conjuntos son iguales. Una diferencia puede 't decir eso porque es 't preguntando sobre la membresía.

La tabla comparativa, ya que las herramientas realmente se superponen en la mente de las personas que buscan ambas cosas:

Comparación de listas Diferencia de texto
Modelo Conjunto desordenado de artículos Secuencia ordenada de líneas
¿El pedido importa? No, reordene libremente, los resultados son idénticos Sí, reordenar se muestra como cambios
Respuestas Membresía: en ambos, sólo A, sólo B, duplicado Ediciones: qué insertar/eliminar para transformar A en B
Artículos duplicados Reportado explícitamente como grupo Sólo más líneas
bueno por Conciliación de exportaciones, listas de correo electrónico, ID, SKU, inventarios Código fuente, prosa, archivos de configuración, cualquier cosa donde la posición sea significado
Malo para Comparación de dos versiones de un documento Cualquier lista donde el orden de clasificación sea arbitrario

Regula: si usted 'd estaría igualmente contento con la lista ordenada de manera diferente, desea una comparación establecida. Si reordenar las líneas sería un cambio real que vale la pena informar, desea el Comprobador de diferencia de texto. Para datos estructurados con anidamiento en lugar de líneas planas, ninguno de los dos se aplica: eso y #39; es lo que Diferencia de JSON es para, ya que se compara por ruta clave en lugar de por línea o por membresía.

¿cómo debería funcionar la sensibilidad del caso?

Esta es la opción que la gente deja por defecto y luego se equivoca silenciosamente, por lo que vale la pena pensarlo una vez.

La coincidencia sin casos es el valor predeterminado correcto para los datos que compara la mayoría de las personas. Direcciones de correo electrónico, nombres de usuario, nombres de dominio, códigos de producto, códigos de país: en la práctica, estos no distinguen convencionalmente entre mayúsculas y minúsculas y [email protected] y [email protected] son la misma persona en todos los sistemas que importan.

Allí ' hay una advertencia pedante aquí que ' vale la pena saber porque ' ocasionalmente soporta carga: por RFC 5321, la parte de dominio de una dirección de correo electrónico no distingue entre mayúsculas y minúsculas, pero local parte - todo antes del @- formalmente distingue entre mayúsculas y minúsculas y se deja que el servidor de correo receptor lo interprete. Entonces [email protected] y [email protected] en principio, podrían ser buzones diferentes. En la práctica, esencialmente todos los proveedores importantes los tratan como idénticos, y si usted & 39; está deduplicando una lista de correo, absolutamente debería doblar el caso. Pero si usted & #39; está depurando por qué rebota una dirección específica, ese & # 39; es el tipo de detalle que resulta importar.

Caso-sensible la coincidencia es correcta para cualquier cosa en la que el caso contenga información: rutas de archivos de Linux, cadenas base64, hashes, tokens JWT, claves API, Git SHA, la mayoría de los identificadores de programación. El caso plegable en una lista de hashes de contraseñas fusionaría valores distintos y le daría una respuesta confiadamente incorrecta.

El detalle de implementación que importa más que la opción en sí: doblar estuche para que coincida, pero muestra el texto original. Si pegas [email protected] y la herramienta te lo dice's en ambas listas, debería devolverlo [email protected]- nu [email protected]. Bajar la salida corrompe silenciosamente sus datos en el camino, y dado que el siguiente paso habitual es pegar el resultado en otro lugar, esa corrupción viaja. La herramienta mantiene la primera forma vista de cada elemento y coincide con una tecla plegada detrás de escena, por lo que lo que sale es lo que pones.

Los espacios en blanco merecen el mismo tratamiento y se piensan menos. Copie una columna de una hoja de cálculo o divida una línea como a, b, c en comas, obtienes elementos que llevan espacios principales. [email protected] y [email protected] son cadenas diferentes y direcciones idénticas. La recorte está activada de forma predeterminada por ese motivo, y es la opción usted & 39;d aviso faltante dentro de unos treinta segundos del uso real.

¿qué separador debo utilizar?

El valor predeterminado es un elemento por línea, que es lo que se obtiene pegando una columna de hoja de cálculo: el portapapeles entrega valores separados por nuevas líneas, por lo que aparece una columna de correos electrónicos de Excel, Google Sheets o una exportación CSV sin reformateo.

Los otros separadores cubren datos que ya llegan en línea. Coma para una sola fila CSV o una matriz copiada. Semicolon para Outlook y la convención de Windows anterior para listas de direcciones. Espacio para salida de shell - ls, git diff --name-only canalizado tr, cualquier cosa delimitada por el espacio. Pestaña para una fila pegada desde una hoja de cálculo horizontalmente en lugar de verticalmente.

Una cosa a tener en cuenta: dividir las comas es no Análisis CSV. Un campo CSV real puede contener una coma dentro de las comillas y una división ingenua se romperá "Smith, Jane" en dos elementos. Si usted & #39; Estás extrayendo una columna de un archivo CSV genuino con campos citados, ejecútala a través de Visor de CSV primero, implementa las reglas de cotización reales de RFC 4180 y luego copia la columna que desee. Para obtener una lista plana de correos electrónicos o ID sin comas integradas, dividir está bien y esto no aparece 't.

Las entradas vacías se eliminan de forma predeterminada, porque son ' casi siempre son artefactos: una nueva línea final al final de una pasta, una fila en blanco en una hoja de cálculo, una coma doble. Una cadena vacía es 't un elemento de cualquier lista que realmente te importe. La opción existe si usted ' Está buscando específicamente filas en blanco en una exportación, lo cual es algo real, aunque poco común, que desea.

¿cómo escala la comparación?

El enfoque ingenuo para comparar dos listas es un bucle anidado: para cada elemento en A, escanee todo B. That's O(n×m), y it's bien para cien artículos e inutilizable para cincuenta mil, donde usted 'Estás haciendo comparaciones de cadenas de 2.500 millones.

El enfoque correcto indexa cada lista en un mapa hash codificado por la clave de comparación (la forma doblada y recortada del elemento), siendo el valor el original visto por primera vez. Construir cada índice es un pase lineal. Entonces cada pregunta se convierte en una búsqueda en tiempo constante por elemento: ¿está esta clave en el mapa B's? Toda la comparación es O (n+m), lo que significa que veinte mil elementos en cada lado son cuarenta mil operaciones hash y se completa más rápido de lo que el navegador puede volver a pintar.

El mismo índice ofrece duplicados de forma gratuita. Cuente las apariciones por clave mientras la construye; cualquier clave con un recuento superior a uno se duplica dentro de esa lista. Sin segundo pase, sin estructura adicional.

En la práctica, el techo es 't la comparación - it's el navegador representa un grupo de resultados con cincuenta mil filas en un área de texto. La aritmética termina en milisegundos independientemente. Si usted & #39; rutinariamente concilias listas tan grandes, probablemente quieras esto en un script en lugar de una pestaña, y el algoritmo anterior tiene aproximadamente diez líneas en cualquier idioma.

Vale la pena señalar la clasificación. Los resultados se ordenan de forma natural de forma predeterminada, lo que significa que tienen en cuenta los números: item2 antes de que item10, no después de eso. La clasificación lexicográfica simple pone item10 primero porque 1 < 2 carácter por carácter, lo cual es correcto por la comparación de letras de cadena y incorrecto por cada expectativa humana al escanear ID o nombres versionados. Desactive la clasificación y obtendrá el orden de inserción (elementos en la secuencia en los que aparecieron por primera vez en A, luego en B), que es ocasionalmente lo que desea cuando el orden original codifica algo como lo reciente.

¿Cómo se ve esto en la práctica?

Cuatro escenarios donde I' De hecho, he usado esto, cada uno de los cuales se asigna a un grupo de resultados diferente.

Limpiar una lista de correo antes de enviarla. Pegue la nueva lista y la lista enviada anteriormente. Sólo en A es quién no ha sido contactado - eso' es su lista de envío. En ambos es quién' obtendría un duplicado. Duplicados en A están las cuarenta personas de la historia en la parte superior de esta página. Esa verificación toma quince segundos y es ' es el que le habría ahorrado al ingeniero de soporte una hora.

Conciliando dos sistemas. Exporte correos electrónicos de usuarios desde el CRM a A y desde la facturación a B. Sólo en A este înregistrat-dar-nunca facturat; sólo en B está facturado pero falta en CRM. Estos son dos errores diferentes. El primero podría ser un webhook roto, el segundo podría ser una factura manual que alguien generó fuera del flujo. Un único " estas listas difieren " La respuesta lo oscurecería por completo, razón por la cual ambas direcciones se informan por separado.

Deriva de inventario y catálogo. El mes pasado y #39;s Exportación de SKU frente a este mes y #39;s. Sólo en A este discontinuat, sólo en B es nuevo, en ambos se traslada. La clasificación de asuntos aquí: las exportaciones provienen de diferentes sistemas en diferentes órdenes, y una diferencia informaría que todo el archivo ha cambiado.

Comprobaciones de cordura de implementación. Archivos sobre puesta en escena versus archivos sobre producción, de dos ls salidas pegadas con el separador de espacio. Sólo en A es lo que se ha enviado 't todavía.

El patrón en los cuatro: la respuesta útil casi nunca es "las listas son diferentes." Es 's a artículos, en a dirección, que es precisamente lo que le brindan las operaciones establecidas y lo que no ofrece una puntuación de similitud o un resumen de diferencias't.

¿Mis listas están subidas a alguna parte?

No, y piensa por un segundo en lo que pegas en una herramienta como esta.

It' es una exportación de suscriptores. Una lista de correos electrónicos de clientes. Identificaciones de empleados. Claves de licencia. Números de cuenta. Las listas que las personas concilian son, por su naturaleza, cercanas a los datos más confidenciales que posee una organización; usted no puede conciliar listas de nada, usted concilia listas de gente. Y " déjame pegar estos dos mil correos electrónicos de clientes en un sitio web aleatorio para verificar si hay superposición " es una oración que debería detenerte, porque en muchas jurisdicciones eso ' es una relación de procesador que acabas de crear sin contrato.

Allí ' no hay razón para que este cálculo toque una red. It's mapas hash sobre cadenas: unos cientos de líneas de TypeScript sin dependencia. La herramienta en Toolz.dev se ejecuta completamente en su pestaña; las listas son cadenas de JavaScript en su navegador y #39;s memoria y nunca la abandonan. Nada se carga, registra ni almacena. Verifique cómo usted & #39;d verifique cualquier afirmación de este tipo: abra la pestaña de red y presione Comparar, o apague su wifi y observe cómo sigue funcionando. I' He escrito más sobre por qué esta arquitectura es importante exactamente para esta clase de datos Por qué las herramientas basadas en navegador superan a las del servidor.

preguntasrán el

¿Cómo comparo dos listas para encontrar lo que tienen en común?

Pegue una lista en la Lista A, la otra en la Lista B y presione Comparar. El "En Both" grupo es la intersección: cada elemento presente en ambas listas. Puede copiar ese grupo por sí solo, descargarlo como un archivo de texto o exportar cada grupo a la vez con Copiar informe. El pedido no es & #39; No importa, por lo que las listas no son & # 39; No es necesario ordenarlo de la misma manera.

¿Cómo encuentro elementos que están en una lista pero no en la otra?

El "Sólo en A" y "Sólo en B" los grupos responden eso, y ellos ' están deliberadamente separados. Sólo en A se contienen elementos que faltan en la Lista B; Sólo en B se contienen elementos que faltan en la Lista A. Estos suelen ser problemas diferentes con diferentes causas: faltan en la facturación y faltan en CRM son ' El mismo error, por lo que colapsarlos en una respuesta pierde la información que necesita. El "Único" El grupo combina ambos si quieres la diferencia simétrica.

¿Puede encontrar duplicados dentro de una sola lista?

Sí. Los duplicados en A y los duplicados en B enumeran cada elemento distinto que aparece más de una vez dentro de esa lista. Esto es independiente de la coincidencia entre listas, por lo que un elemento puede duplicarse en A y estar presente en B. It's suele ser la verificación que más importa en la práctica, ya que los duplicados dentro de la lista son los que causan correos electrónicos duplicados y facturación doble.

¿La capitalización afecta la comparación?

Sólo si así lo deseas. La coincidencia sensible a casos está desactivada de forma predeterminada [email protected] y [email protected] se tratan como un solo elemento y la salida conserva cualquier forma que haya pegado en lugar de reducir sus datos. Actívelo para valores donde el caso tenga significado: rutas de Linux, cadenas base64, hashes, claves API, Git SHA.

¿cuál es la diferencia entre esto y una herramienta de diferenciación de texto?

Una diferencia es posicional: compara la línea 1 con la línea 1 y calcula las ediciones necesarias para convertir una secuencia en otra, por lo que reordenar una lista hace que casi todas las líneas parezcan cambiadas. Esta herramienta ignora el orden por completo y solo pregunta si existe un elemento en cada lado. Utilice una diferencia para código y prosa donde la posición sea significado; use la comparación de listas para conciliar exportaciones donde el orden de clasificación es arbitrario.

¿Puedo comparar listas separadas por comas en lugar de nuevas líneas?

Sí, cambie el separador a coma, punto y coma, espacio o pestaña. Los espacios en blanco alrededor de cada elemento se recortan de forma predeterminada, por lo que a, b, c se divide en tres elementos limpios. Una advertencia: dividir las comas es 't análisis CSV real, por lo que si sus datos tienen campos citados que contienen comas, primero extraiga la columna con una herramienta CSV adecuada.

¿Cuántos artículos puede manejar?

La comparación indexa cada lista en un mapa hash y se ejecuta en tiempo lineal en lugar de utilizar bucles anidados, por lo que decenas de miles de elementos en cada lado se completan en milisegundos. El techo práctico es que su navegador represente un grupo de resultados muy grande en la página, no la comparación en sí.

¿Mis listas están subidas a alguna parte?

No. Todo el análisis y la comparación se realizan como JavaScript en su navegador; nada se transmite, registra ni almacena. Esto importa aquí más que para la mayoría de las herramientas, porque las listas que las personas concilian suelen ser correos electrónicos de clientes, identificaciones de empleados o claves de licencia. Mire la pestaña de su red mientras compara o desconéctese y seguirá funcionando.


Herramientas relacionadas: Comprobador de diferencia de texto Cuando el orden y la posición importan, Diferencia de JSON Para datos estructurados, Visor de CSV para extraer una columna de un CSV real, y Contador de palabras para recuentos rápidos. Lectura adicional: Por qué las herramientas basadas en navegador superan a las del servidor y El kit de herramientas del desarrollador web.

Frequently Asked Questions

Paste one list into List A, the other into List B, and press Compare. The "In Both" group is the intersection — every item present in both lists. You can copy that group on its own, download it as a text file, or export every group at once with Copy Report. Order doesn't matter, so the lists don't need to be sorted the same way.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!