Menu
Coddy logo textTech

Aktualizowanie słowników

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 14 z 56.

Do słownika zapisujesz w taki sam sposób, w jaki odczytujesz z niego dane: za pomocą indeksu dolnego.

var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3                // dodaje klucz
prices["apple"] = 2                // aktualizuje istniejący klucz
prices["apple"] = nil              // usuwa klucz

Dwie nazwane metody robią to samo w bardziej jawny sposób:

prices.updateValue(5, forKey: "milk") // zwraca poprzednią wartość lub nil
prices.removeValue(forKey: "bread")  // zwraca usuniętą wartość lub nil

Metody z nazwą zwracają poprzednią wartość, co jest przydatne, gdy chcesz wiedzieć, czy klucz już istniał.

Wzorzec z indeksem dolnym z poprzedniej lekcji świetnie łączy się z mutacją — tak tworzysz licznik bez pisania if:

var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
    counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]
challenge icon

Wyzwanie

Średni

Odczytaj jeden wiersz wejścia: listę operacji na początkowym słowniku, rozdzielonych przecinkami. Każda operacja ma jedną z postaci:

  • set:<key>:<value> dodaj lub zaktualizuj (wartość jest liczbą całkowitą)
  • add:<key>:<value> dodaj wartość do istniejącej (użyj wzorca z indeksem domyślnym)
  • del:<key> usuń klucz

Po zastosowaniu każdej operacji w podanej kolejności do początkowo pustego [String: Int] wypisz klucze w kolejności alfabetycznej, po jednym w wierszu, w formacie <key>=<value>.

Dla wejścia set:a:5,add:a:3,set:b:1,del:b,add:c:2 wynikiem jest:

a=8
c=2

Spróbuj swoich sił

let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]

// TODO: sparsuj każdą op i wykonaj set/add/del; wypisz posortowane klucze wraz z wartościami
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift