Convertir una lista en un Conjunto
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 21 de 65.
Una de las aplicaciones más prácticas de Set es eliminar elementos duplicados de una List. Dado que los conjuntos eliminan automáticamente los duplicados, puedes convertir fácilmente una lista con valores repetidos en una colección de elementos únicos.
Para convertir una List en un Set, simplemente pasas la lista al constructor Set.from(). Esto crea un nuevo conjunto que contiene todos los elementos únicos de la lista original.
List<int> numbersWithDuplicates = [1, 2, 2, 3, 3, 3, 4, 5, 5];
Set<int> uniqueNumbers = Set.from(numbersWithDuplicates);
print(uniqueNumbers); // {1, 2, 3, 4, 5}Si necesitas el resultado de vuelta como una List (quizás para mantener la compatibilidad con otras partes de tu código), puedes convertir el conjunto de nuevo a una lista usando toList(). Esto te da una lista que contiene solo los elementos únicos de la original.
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]Este patrón de List → Set → List es extremadamente común cuando necesitas limpiar datos eliminando duplicados mientras preservas la estructura de la lista para un procesamiento posterior.
Desafío
FácilCrea un programa que gestione un sistema de limpieza de datos eliminando entradas duplicadas de las respuestas de una encuesta. Tu programa debe:
- Leer una entrada de cadena que represente el título de la encuesta
- Leer múltiples entradas de cadena que representen las respuestas de la encuesta (la entrada terminará cuando recibas
"responses_done") - Crear una List para almacenar todas las respuestas originales (incluyendo duplicados)
- Usar
Set.from()para convertir la lista en un Set, eliminando automáticamente los duplicados - Usar
toList()para convertir el Set de nuevo en una List de respuestas únicas - Imprimir los resultados de la limpieza de datos en el formato exacto que se muestra a continuación
Por ejemplo, si el título de la encuesta es "Customer Satisfaction Survey" y las respuestas son "Excellent", "Good", "Excellent", "Fair", "Good", "Excellent", "Poor", tu programa debería mostrar:
Survey: Customer Satisfaction Survey
Original responses: [Excellent, Good, Excellent, Fair, Good, Excellent, Poor]
Total responses collected: 7
Converting to Set to remove duplicates...
Unique responses (Set): {Excellent, Good, Fair, Poor}
Converting back to List...
Cleaned responses: [Excellent, Good, Fair, Poor]
Duplicates removed: 3
Final unique responses: 4
Status: Data cleaning completed successfullySi el título de la encuesta es "Product Feedback" y las respuestas son "Like", "Dislike", "Like", "Like", tu programa debería mostrar:
Survey: Product Feedback
Original responses: [Like, Dislike, Like, Like]
Total responses collected: 4
Converting to Set to remove duplicates...
Unique responses (Set): {Like, Dislike}
Converting back to List...
Cleaned responses: [Like, Dislike]
Duplicates removed: 2
Final unique responses: 2
Status: Data cleaning completed successfullySi el título de la encuesta es "Event Rating" y las respuestas son "Amazing", "Okay", "Great", tu programa debería mostrar:
Survey: Event Rating
Original responses: [Amazing, Okay, Great]
Total responses collected: 3
Converting to Set to remove duplicates...
Unique responses (Set): {Amazing, Okay, Great}
Converting back to List...
Cleaned responses: [Amazing, Okay, Great]
Duplicates removed: 0
Final unique responses: 3
Status: Data cleaning completed successfullyTu programa debe demostrar el patrón completo List → Set → List. Primero almacena todas las respuestas en una List, luego usa Set.from() para crear un Set a partir de la List, y finalmente usa toList() para convertir el Set de nuevo a una List. Calcula el número de duplicados eliminados restando el recuento único final del recuento total original.
Hoja de referencia
Para eliminar duplicados de una List, conviértela en un Set usando Set.from():
List<int> numbersWithDuplicates = [1, 2, 2, 3, 3, 3, 4, 5, 5];
Set<int> uniqueNumbers = Set.from(numbersWithDuplicates);
print(uniqueNumbers); // {1, 2, 3, 4, 5}Para convertir un Set de nuevo a una List, usa toList():
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]El patrón List → Set → List se utiliza comúnmente para la limpieza de datos mientras se preserva la estructura de la lista.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer el título de la encuesta
String? surveyTitle = stdin.readLineSync();
// Leer las respuestas de la encuesta hasta "responses_done"
List<String> originalResponses = [];
String? response;
while ((response = stdin.readLineSync()) != "responses_done") {
if (response != null) {
originalResponses.add(response);
}
}
// TODO: Escribe tu código a continuación
// 1. Usa Set.from() para convertir la lista en un Set (elimina duplicados)
// 2. Usa toList() para convertir el Set de nuevo en una Lista
// 3. Calcula los duplicados eliminados y los conteos finales
// Imprimir los resultados en el formato requerido
print("Survey: $surveyTitle");
print("Original responses: $originalResponses");
// Agrega las declaraciones de impresión restantes aquí
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única