Menu
Coddy logo textTech

Raggruppare i valori

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

Lo schema del pedice predefinito è alla base di due forme di uso quotidiano.

Contatore di frequenza: conta quante volte compare ogni chiave.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

Raggruppamento: raccogli i valori sotto una chiave derivata:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

Il valore predefinito per il caso di raggruppamento è un array vuoto. Il valore default: viene usato solo quando manca la chiave; poi, il membro destro modifica la voce sul posto.

challenge icon

Sfida

Medio

Leggi una singola riga di input: un elenco di parole separate da virgole.

Stampa, in questo ordine:

  1. Una riga per ogni lunghezza di parola presente nell'input, ordinata dalla più corta alla più lunga, nel formato <length>: <count> dove count indica quante parole di quella lunghezza sono presenti
  2. Most common length: <n> dove n è la lunghezza con il conteggio più alto. In caso di parità, scegli la lunghezza più corta.

Per l'input hi,hello,yo,hey,bonjour,bye, l'output è:

2: 2
3: 2
5: 1
7: 1
Most common length: 2

(Le lunghezze 2 e 3 compaiono entrambe due volte. In caso di parità si sceglie quella più corta, quindi vince 2.)

Provalo tu

let words = readLine()!.components(separatedBy: ",")

// TODO: conta le parole per lunghezza; stampa in ordine; stampa la lunghezza più comune (in caso di parità: quella più corta)
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