Ü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.
Aufgabe
EinfachDas scores Dictionary ordnet Studentennamen Int Werten zu. Gib Folgendes aus:
- Jeden Eintrag als
<name>: <score>, sortiert alphabetisch nach Namen, einen pro Zeile Sum: <total>über alle Werte (verwende.valuesundreduce)Above 70: <count>wobeicountdie Anzahl der Einträge ist, deren Wert strikt größer als70ist
Für das Standard-Dictionary sieht die Ausgabe wie folgt aus:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3Spickzettel
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 WertenProbier 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken3Dictionaries
Dictionaries deklarierenOptionaler LookupDictionaries aktualisierenÜber Dictionaries iterierenWerte gruppierenZusammenfassung – Inventar6Funktionen höherer Ordnung Teil 2
compactMapflatMapsorted(by:)Pipelines erstellenZusammenfassung – Bestenliste