Iterare sui dizionari
Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 15 di 56.
Iterare su un dizionario con for ti fornisce entrambe le parti di ogni coppia sotto forma di tupla:
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}L'ordine di iterazione non è garantito. Esegui il ciclo due volte e potresti vedere le voci in un ordine diverso. Quando l'ordine è importante, ordina prima:
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}L’espressione dentro sorted(by:) è una closure: confronta due coppie ($0 e $1) in base alla loro proprietà key. Le closure avranno un capitolo tutto loro più avanti; per ora, considera questa espressione una ricetta per ordinare un dizionario.
Altre due proprietà utili: .keys e .values ti restituiscono la raccolta contenente solo le chiavi o solo i valori.
Sfida
FacileIl dizionario scores associa i nomi degli studenti ai punteggi Int. Stampa:
- Ogni voce nel formato
<name>: <score>, ordinata in ordine alfabetico per nome, una per riga Sum: <total>di tutti i valori (usa.valuesereduce)Above 70: <count>dovecountè il numero di voci con un punteggio strettamente maggiore di70
Per il dizionario predefinito, l’output è:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3Provalo tu
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO: stampa le voci ordinate; calcola la somma con reduce su .values; conta i valori > 70
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