Mengelompokkan Nilai
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 16 dari 56.
Pola subskrip bawaan menjadi dasar bagi dua bentuk yang umum digunakan sehari-hari.
Penghitung frekuensi: hitung berapa kali setiap kunci muncul.
let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]Pengelompokan: kumpulkan nilai berdasarkan kunci turunan:
let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]Nilai default untuk kasus bucketing adalah array kosong. Nilai default: hanya digunakan saat key tidak ada, lalu sisi kanan mengubah entri secara langsung.
Tantangan
SedangBaca satu baris input: list kata yang dipisahkan dengan koma.
Cetak, dengan urutan berikut:
- Satu baris untuk setiap panjang kata yang muncul dalam input, diurutkan dari yang terpendek hingga terpanjang, dengan format
<length>: <count>dengancountadalah jumlah kata dengan panjang tersebut Most common length: <n>dengannadalah panjang kata dengan jumlah tertinggi. Jika jumlahnya sama, pilih panjang yang lebih pendek.
Untuk input hi,hello,yo,hey,bonjour,bye, output-nya adalah:
2: 2
3: 2
5: 1
7: 1
Most common length: 2(Panjang 2 dan 3 sama-sama muncul dua kali. Jika jumlahnya sama, pilih yang lebih pendek, jadi 2 yang menang.)
Coba sendiri
let words = readLine()!.components(separatedBy: ",")
// TODO: hitung jumlah kata berdasarkan panjangnya; cetak hasil yang sudah diurutkan; cetak panjang yang paling umum (jika seri: yang lebih pendek)
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