Menu
Coddy logo textTech

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.

challenge icon

Défi

Facile

Cré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 :

  1. Lire une chaîne de caractères en entrée représentant le titre du sondage
  2. Lire plusieurs chaînes de caractères représentant les réponses au sondage (la saisie se terminera lorsque vous recevrez "responses_done")
  3. Créer une List pour stocker toutes les réponses originales (y compris les doublons)
  4. Utiliser Set.from() pour convertir la liste en un Set, supprimant automatiquement les doublons
  5. Utiliser toList() pour convertir le Set à nouveau en une List de réponses uniques
  6. 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 successfully

Si 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 successfully

Si 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 successfully

Votre 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
}
quiz iconTestez-vous

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