Menelusuri dictionary
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 15 dari 56.
Melakukan iterasi pada dictionary dengan for memberikan kedua bagian dari setiap pasangan sebagai tuple:
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}Urutan iterasi tidak dijamin. Jalankan perulangan dua kali dan kamu mungkin melihat entri dalam urutan yang berbeda. Jika urutan penting, urutkan terlebih dahulu:
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}Ekspresi di dalam sorted(by:) adalah closure: ekspresi ini membandingkan dua pasangan ($0 dan $1) berdasarkan property key-nya. Closure akan dibahas dalam bab tersendiri nanti. Untuk sekarang, anggap ini sebagai resep untuk mengurutkan dictionary.
Dua property lain yang berguna: .keys dan .values memberimu koleksi yang hanya berisi key atau nilai.
Tantangan
Mudahdictionary scores memetakan nama siswa ke skor Int. Cetak:
- Setiap entri sebagai
<name>: <score>, diurutkan berdasarkan nama secara alfabetis, satu entri per baris Sum: <total>dari semua nilai (gunakan.valuesdanreduce)Above 70: <count>dengancountadalah jumlah entri yang memiliki skor lebih besar dari70
Untuk dictionary bawaan, output-nya adalah:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3Coba sendiri
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO: cetak entri yang sudah diurutkan; jumlahkan dengan reduce pada .values; hitung nilai > 70
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi Kalender3dictionary
Mendeklarasikan dictionaryPencarian OpsionalMemperbarui dictionaryMenelusuri dictionaryMengelompokkan NilaiRangkuman: Inventaris6Fungsi Orde Tinggi Bagian 2
compactMapflatMapsorted(by:)Membangun PipelineRingkasan: Papan PeringkatLatihan sendiri: Playground Swift