Menu
Coddy logo textTech

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.

challenge icon

Défi

Facile

Le dictionnaire scores associe des noms d'étudiants à des scores de type Int. Affichez :

  1. Chaque entrée sous la forme <name>: <score>, triée par nom par ordre alphabétique, une par ligne
  2. Sum: <total> pour l'ensemble des valeurs (utilisez .values et reduce)
  3. Above 70: <count>count est 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: 3

Essayez 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
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 et Flux

Entraînez-vous par vous-même : Playground Swift