Menu
Coddy logo textTech

Aggiornare i dizionari

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 14 di 56.

Scrivi in un dizionario nello stesso modo in cui leggi da uno: con la notazione tramite pedice.

var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3                // aggiunge la chiave
prices["apple"] = 2                // aggiorna una chiave esistente
prices["apple"] = nil              // rimuove la chiave

Due metodi con nome fanno la stessa cosa in modo più esplicito:

prices.updateValue(5, forKey: "milk") // restituisce il valore precedente oppure nil
prices.removeValue(forKey: "bread")  // restituisce il valore rimosso oppure nil

I metodi con nome restituiscono il valore precedente, il che è utile quando devi sapere se la chiave esisteva già.

Lo schema del pedice predefinito della lezione precedente si combina perfettamente con la mutazione: è così che costruisci un contatore senza scrivere un if:

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

Sfida

Medio

Leggi una singola riga di input: un elenco di operazioni separate da virgole su un dizionario iniziale. Ogni operazione è una delle seguenti:

  • set:<key>:<value> aggiungi o aggiorna (il valore è un intero)
  • add:<key>:<value> aggiungi il valore a quello esistente (usa il pattern di pedice con valore predefinito)
  • del:<key> rimuovi la chiave

Dopo aver applicato ogni operazione nell'ordine a un [String: Int] inizialmente vuoto, stampa le chiavi in ordine alfabetico, una per riga, nel formato <key>=<value>.

Per l'input set:a:5,add:a:3,set:b:1,del:b,add:c:2, l'output è:

a=8
c=2

Provalo tu

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

// TODO: analizza ogni op e applica set/add/del; stampa le chiavi ordinate con i relativi valori
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift