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.
Sfida
MedioLeggi una singola riga di input: un elenco di parole separate da virgole.
Stampa, in questo ordine:
- Una riga per ogni lunghezza di parola presente nell'input, ordinata dalla più corta alla più lunga, nel formato
<length>: <count>dovecountindica quante parole di quella lunghezza sono presenti Most common length: <n>dovenè 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)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle parole3Dizionari
Dichiarare i dizionariRicerca facoltativaAggiornare i dizionariIterare sui dizionariRaggruppare i valoriRipasso - Inventario6Funzioni di ordine superiore Parte 2
compactMapflatMapsorted(by:)Creare pipelineRiepilogo - ClassificaEsercitati da solo: Playground Swift