Menu
Coddy logo textTech

Iterowanie po słownikach

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 15 z 56.

Iterowanie po słowniku za pomocą for daje ci obie części każdej pary w postaci krotki:

let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
    print("\(item) costs \(price)")
}

Kolejność iteracji nie jest gwarantowana. Uruchom pętlę dwa razy, a wpisy mogą pojawić się w innej kolejności. Gdy kolejność ma znaczenie, najpierw posortuj:

for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
    print("\(item): \(price)")
}

Wyrażenie wewnątrz sorted(by:) jest domknięciem: porównuje dwie pary ($0 i $1) na podstawie ich właściwości key. Domknięcia będą omawiane w osobnym rozdziale później; na razie potraktuj to jako przepis na sortowanie słownika.

Dwie kolejne przydatne właściwości: .keys i .values dają kolekcję zawierającą same klucze lub same wartości.

challenge icon

Wyzwanie

Łatwy

Słownik scores mapuje imiona uczniów na wyniki typu Int. Wypisz:

  1. Każdy wpis w formacie <name>: <score>, posortowane alfabetycznie według imienia, po jednym w wierszu
  2. Sum: <total> wszystkich wartości (użyj .values i reduce)
  3. Above 70: <count>, gdzie count oznacza liczbę wpisów, których wynik jest ściśle większy niż 70

Dla domyślnego słownika wynik to:

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

Spróbuj swoich sił

let scores: [String: Int] = [
    "Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]

// TODO: wypisz posortowane wpisy; oblicz sumę za pomocą reduce na .values; policz wartości > 70
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift