Propriétés de Map : keys & values
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 28 sur 65.
Lorsque vous travaillez avec des collections Map, vous avez parfois besoin d'extraire toutes les clés ou toutes les valeurs séparément. Dart fournit deux propriétés pratiques pour cela : .keys et .values.
La propriété .keys renvoie un itérable contenant toutes les clés de la map, tandis que .values renvoie un itérable contenant toutes les valeurs correspondantes. Ces propriétés sont particulièrement utiles lorsque vous avez besoin de traiter les clés et les valeurs indépendamment.
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
Iterable<String> productNames = inventory.keys;
Iterable<double> prices = inventory.values;
print(productNames); // (Laptop, Mouse, Keyboard)
print(prices); // (999.99, 25.5, 75.0)Puisque ces propriétés renvoient des itérables plutôt que des listes, vous pouvez les convertir en listes en utilisant .toList() si vous avez besoin de fonctionnalités spécifiques aux listes. Cette séparation des clés et des valeurs est particulièrement utile lorsque vous devez analyser ou manipuler un aspect de vos données indépendamment de l'autre.
Défi
FacileCréez un programme qui gère un système de bibliothèque numérique en analysant les collections de livres et en extrayant des informations sur les titres et leurs années de publication. Votre programme doit :
- Lire une chaîne de caractères en entrée représentant le nom de la bibliothèque
- Lire plusieurs paires d'entrées représentant les titres des livres et leurs années de publication (la saisie se terminera lorsque vous recevrez
"catalog_done") - Créer une Map pour stocker chaque titre de livre comme clé et son année de publication comme valeur
- Utiliser la propriété
.keyspour extraire tous les titres de livres et les convertir en une List - Utiliser la propriété
.valuespour extraire toutes les années de publication et les convertir en une List - Trouver le livre le plus ancien en identifiant l'année minimale parmi les valeurs
- Trouver le livre le plus récent en identifiant l'année maximale parmi les valeurs
- Afficher l'analyse de la bibliothèque exactement au format indiqué ci-dessous
Par exemple, si le nom de la bibliothèque est "Central Library" et que le catalogue comprend "To Kill a Mockingbird" avec l'année 1960, "1984" avec l'année 1949, "The Great Gatsby" avec l'année 1925, "Harry Potter" avec l'année 1997, votre programme doit afficher :
Library: Central Library
Book Collection Analysis:
All book titles: [To Kill a Mockingbird, 1984, The Great Gatsby, Harry Potter]
All publication years: [1960, 1949, 1925, 1997]
Total books in collection: 4
Oldest book year: 1925
Newest book year: 1997
Collection span: 72 years
Status: Library catalog analysis completedSi le nom de la bibliothèque est "University Library" et que le catalogue comprend "Pride and Prejudice" avec l'année 1813, "Moby Dick" avec l'année 1851, "Brave New World" avec l'année 1932, votre programme doit afficher :
Library: University Library
Book Collection Analysis:
All book titles: [Pride and Prejudice, Moby Dick, Brave New World]
All publication years: [1813, 1851, 1932]
Total books in collection: 3
Oldest book year: 1813
Newest book year: 1932
Collection span: 119 years
Status: Library catalog analysis completedSi le nom de la bibliothèque est "Community Library" et que le catalogue comprend "The Hobbit" avec l'année 1937, "Dune" avec l'année 1965, "Neuromancer" avec l'année 1984, "The Martian" avec l'année 2011, "Klara and the Sun" avec l'année 2021, votre programme doit afficher :
Library: Community Library
Book Collection Analysis:
All book titles: [The Hobbit, Dune, Neuromancer, The Martian, Klara and the Sun]
All publication years: [1937, 1965, 1984, 2011, 2021]
Total books in collection: 5
Oldest book year: 1937
Newest book year: 2021
Collection span: 84 years
Status: Library catalog analysis completedVotre programme doit utiliser la propriété .keys pour extraire tous les titres de livres et la propriété .values pour extraire toutes les années de publication. Convertissez les deux itérables en Lists en utilisant .toList(). Calculez la durée de la collection en soustrayant l'année la plus ancienne de l'année la plus récente. Le format d'entrée sera : le nom de la bibliothèque, puis alternativement les titres des livres et les années de publication (sous forme de chaînes de caractères qui doivent être converties en entiers), se terminant par "catalog_done".
Aide-mémoire
Utilisez .keys pour extraire toutes les clés d'une Map et .values pour extraire toutes les valeurs :
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
Iterable<String> productNames = inventory.keys;
Iterable<double> prices = inventory.values;
print(productNames); // (Laptop, Mouse, Keyboard)
print(prices); // (999.99, 25.5, 75.0)Convertissez les itérables en listes en utilisant .toList() pour des fonctionnalités spécifiques aux listes :
List<String> namesList = inventory.keys.toList();
List<double> pricesList = inventory.values.toList();Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom de la bibliothèque
String? libraryName = stdin.readLineSync();
// Créer une Map pour stocker les titres de livres et les années de publication
Map<String, int> bookCatalog = {};
// Lire les titres et les années des livres jusqu'à "catalog_done"
while (true) {
String? input = stdin.readLineSync();
if (input == "catalog_done") {
break;
}
String bookTitle = input!;
String? yearInput = stdin.readLineSync();
int publicationYear = int.parse(yearInput!);
bookCatalog[bookTitle] = publicationYear;
}
// TODO: Écrivez votre code ci-dessous
// Extraire les titres des livres en utilisant la propriété .keys et convertir en List
// Extraire les années de publication en utilisant la propriété .values et convertir en List
// Trouver les années la plus ancienne et la plus récente
// Calculer l'étendue de la collection
// Afficher l'analyse de la bibliothèque au format requis
print("Library: $libraryName");
print("Book Collection Analysis:");
// Ajoutez vos instructions de sortie 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