Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Il dizionario scores associa i nomi degli studenti ai punteggi Int. Stampa:

  1. Ogni voce nel formato <name>: <score>, ordinata in ordine alfabetico per nome, una per riga
  2. Sum: <total> di tutti i valori (usa .values e reduce)
  3. Above 70: <count> dove count è il numero di voci con un punteggio strettamente maggiore di 70

Per il dizionario predefinito, l’output è:

Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3

Provalo 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
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