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.
Wyzwanie
ŁatwySłownik scores mapuje imiona uczniów na wyniki typu Int. Wypisz:
- Każdy wpis w formacie
<name>: <score>, posortowane alfabetycznie według imienia, po jednym w wierszu Sum: <total>wszystkich wartości (użyj.valuesireduce)Above 70: <count>, gdziecountoznacza 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: 3Spró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
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
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słów3Słowniki
Deklarowanie słownikówWyszukiwanie opcjonalneAktualizowanie słownikówIterowanie po słownikachGrupowanie wartościPodsumowanie – inwentarz6Funkcje wyższego rzędu, cz. 2
compactMapflatMapsorted(by:)Tworzenie potokówPowtórzenie – tabela wynikówPoćwicz samodzielnie: Edytor online Swift