Parcourir des dictionnaires
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 15 sur 56.
L'itération d'un dictionnaire avec for vous donne les deux parties de chaque paire sous forme de tuple :
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}L'ordre d'itération n'est pas garanti. Exécutez la boucle deux fois et vous pourriez voir les entrées dans un ordre différent. Lorsque l'ordre est important, triez d'abord :
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}L'expression à l'intérieur de sorted(by:) est une closure : elle compare deux paires ($0 et $1) par leur propriété key. Les closures feront l'objet d'un chapitre dédié plus tard, pour l'instant considérez cela comme une recette pour trier un dictionnaire.
Deux autres propriétés utiles : .keys et .values vous donnent la collection des clés uniquement ou des valeurs uniquement.
Défi
FacileLe dictionnaire scores associe des noms d'étudiants à des scores de type Int. Affichez :
- Chaque entrée sous la forme
<name>: <score>, triée par nom par ordre alphabétique, une par ligne Sum: <total>pour l'ensemble des valeurs (utilisez.valuesetreduce)Above 70: <count>oùcountest le nombre d'entrées ayant un score strictement supérieur à70
Pour le dictionnaire par défaut, la sortie est :
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3Aide-mémoire
Parcourez un dictionnaire avec for pour obtenir des tuples clé-valeur :
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}L'ordre d'itération n'est pas garanti. Triez d'abord lorsque l'ordre est important :
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}Accédez uniquement aux clés ou aux valeurs avec .keys et .values :
prices.keys // collection de clés
prices.values // collection de valeursEssayez vous-même
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO: afficher les entrées triées ; somme via reduce sur .values ; compter > 70
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 et Flux
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots3Dictionnaires
Déclarer des dictionnairesRecherche optionnelleMettre à jour des dictionnairesParcourir des dictionnairesGrouper des valeursRécapitulatif - Inventaire6Fonctions d'ordre supérieur, partie 2
compactMapflatMapsorted(by:)Construction de pipelinesRécapitulatif - Tableau de classement