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: 3Essayez 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 classementEntraînez-vous par vous-même : Playground Swift