Menu
Coddy logo textTech

Über Dictionaries iterieren

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 15 von 56.

Das Iterieren über ein Dictionary mit for liefert Ihnen beide Hälften jedes Paares als Tupel:

let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
    print("\(item) costs \(price)")
}

Die Iterationsreihenfolge ist nicht garantiert. Führen Sie die Schleife zweimal aus, und Sie sehen die Einträge möglicherweise in einer anderen Reihenfolge. Wenn die Sortierung wichtig ist, sortieren Sie zuerst:

for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
    print("\(item): \(price)")
}

Der Ausdruck innerhalb von sorted(by:) ist ein Closure: er vergleicht zwei Paare ($0 und $1) anhand ihrer key-Eigenschaft. Closures erhalten später ein eigenes Kapitel, betrachten Sie dies vorerst als ein Rezept zum Sortieren eines Dictionarys.

Zwei weitere nützliche Eigenschaften: .keys und .values liefern Ihnen die reine Schlüssel- oder reine Wertesammlung.

challenge icon

Aufgabe

Einfach

Das scores Dictionary ordnet Studentennamen Int Werten zu. Gib Folgendes aus:

  1. Jeden Eintrag als <name>: <score>, sortiert alphabetisch nach Namen, einen pro Zeile
  2. Sum: <total> über alle Werte (verwende .values und reduce)
  3. Above 70: <count> wobei count die Anzahl der Einträge ist, deren Wert strikt größer als 70 ist

Für das Standard-Dictionary sieht die Ausgabe wie folgt aus:

Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3

Spickzettel

Iterieren Sie über ein Dictionary mit for, um Key-Value-Tupel zu erhalten:

let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
    print("\(item) costs \(price)")
}

Die Iterationsreihenfolge ist nicht garantiert. Sortieren Sie zuerst, wenn die Reihenfolge wichtig ist:

for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
    print("\(item): \(price)")
}

Greifen Sie nur auf Schlüssel oder Werte mit .keys und .values zu:

prices.keys    // Sammlung von Schlüsseln
prices.values  // Sammlung von Werten

Probier es selbst

let scores: [String: Int] = [
    "Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]

// TODO: sortierte Einträge drucken; Summe via reduce auf .values; Anzahl > 70
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss