Dictionaries aktualisieren
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 14 von 56.
Sie schreiben in ein Dictionary auf die gleiche Weise, wie Sie daraus lesen: mit dem Subscript.
var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3 // fügt den Schlüssel hinzu
prices["apple"] = 2 // aktualisiert einen vorhandenen Schlüssel
prices["apple"] = nil // entfernt den SchlüsselZwei benannte Methoden machen dasselbe expliziter:
prices.updateValue(5, package: "milk") // gibt den alten Wert zurück, oder nil
prices.removeValue(forKey: "bread") // gibt den entfernten Wert zurück, oder nilDie genannten Methoden geben den vorherigen Wert zurück, was nützlich ist, wenn Sie wissen müssen, ob der Schlüssel bereits existierte.
Das Default-Subscript-Pattern aus der vorherigen Lektion lässt sich perfekt mit Mutation verketten; so bauen Sie einen Zähler, ohne ein if zu schreiben:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]Aufgabe
MittelLies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von Operationen auf einem anfänglichen Dictionary. Jede Operation ist eine der folgenden:
set:<key>:<value>hinzufügen oder aktualisieren (der Wert ist eine Ganzzahl)add:<key>:<value>den Wert zum bestehenden Wert addieren (verwende das Default-Subscript-Pattern)del:<key>den Schlüssel entfernen
Nachdem jede Operation nacheinander auf ein anfänglich leeres [String: Int] angewendet wurde, gib die Schlüssel in alphabetischer Reihenfolge aus, einen pro Zeile, im Format <key>=<value>.
Für die Eingabe set:a:5,add:a:3,set:b:1,del:b,add:c:2 lautet die Ausgabe:
a=8
c=2Spickzettel
Ändern Sie ein Dictionary mithilfe von Subscripts oder benannten Methoden:
prices["bread"] = 3 // hinzufügen
prices["apple"] = 2 // aktualisieren
prices["apple"] = nil // entfernen
prices.updateValue(5, forKey: "milk") // gibt den alten Wert oder nil zurück
prices.removeValue(forKey: "bread") // gibt den entfernten Wert oder nil zurückVerwenden Sie das Default-Subscript-Muster, um ohne if zu mutieren:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]Probier es selbst
let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]
// TODO: Jede Operation parsen und set/add/del anwenden; sortierte Schlüssel mit Werten ausgeben
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