Convertir une liste en ensemble
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 21 sur 65.
L'une des applications les plus pratiques de Set est la suppression des éléments en double d'une List. Comme les ensembles éliminent automatiquement les doublons, vous pouvez facilement convertir une liste contenant des valeurs répétées en une collection d'éléments uniques.
Pour convertir une List en un Set, il vous suffit de passer la liste au constructeur Set.from(). Cela crée un nouvel ensemble contenant tous les éléments uniques de la liste d'origine.
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 vous avez besoin du résultat sous forme de List (peut-être pour maintenir la compatibilité avec d'autres parties de votre code), vous pouvez reconvertir l'ensemble en une liste en utilisant toList(). Cela vous donne une liste contenant uniquement les éléments uniques de l'original.
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]Ce modèle de List → Set → List est extrêmement courant lorsque vous avez besoin de nettoyer des données en supprimant les doublons tout en préservant la structure de liste pour un traitement ultérieur.
Défi
FacileCréez un programme qui gère un système de nettoyage de données en supprimant les entrées en double des réponses à un sondage. Votre programme doit :
- Lire une chaîne de caractères en entrée représentant le titre du sondage
- Lire plusieurs chaînes de caractères représentant les réponses au sondage (la saisie se terminera lorsque vous recevrez
"responses_done") - Créer une List pour stocker toutes les réponses originales (y compris les doublons)
- Utiliser
Set.from()pour convertir la liste en un Set, supprimant automatiquement les doublons - Utiliser
toList()pour convertir le Set à nouveau en une List de réponses uniques - Afficher les résultats du nettoyage des données exactement dans le format indiqué ci-dessous
Par exemple, si le titre du sondage est "Customer Satisfaction Survey" et que les réponses sont "Excellent", "Good", "Excellent", "Fair", "Good", "Excellent", "Poor", votre programme doit afficher :
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 le titre du sondage est "Product Feedback" et que les réponses sont "Like", "Dislike", "Like", "Like", votre programme doit afficher :
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 le titre du sondage est "Event Rating" et que les réponses sont "Amazing", "Okay", "Great", votre programme doit afficher :
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 successfullyVotre programme doit démontrer le modèle complet List → Set → List. Stockez d'abord toutes les réponses dans une List, puis utilisez Set.from() pour créer un Set à partir de la List, et enfin utilisez toList() pour convertir le Set à nouveau en une List. Calculez le nombre de doublons supprimés en soustrayant le nombre final d'éléments uniques du nombre total d'origine.
Aide-mémoire
Pour supprimer les doublons d'une List, convertissez-la en un Set en utilisant 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}Pour convertir un Set à nouveau en List, utilisez toList() :
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]Le modèle List → Set → List est couramment utilisé pour le nettoyage des données tout en préservant la structure de la liste.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le titre du sondage
String? surveyTitle = stdin.readLineSync();
// Lire les réponses au sondage jusqu'à "responses_done"
List<String> originalResponses = [];
String? response;
while ((response = stdin.readLineSync()) != "responses_done") {
if (response != null) {
originalResponses.add(response);
}
}
// TODO: Écrivez votre code ci-dessous
// 1. Utiliser Set.from() pour convertir la liste en un Set (supprime les doublons)
// 2. Utiliser toList() pour convertir le Set à nouveau en une List
// 3. Calculer les doublons supprimés et les comptes finaux
// Afficher les résultats dans le format requis
print("Survey: $surveyTitle");
print("Original responses: $originalResponses");
// Ajouter les instructions d'affichage restantes ici
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques