Nhóm giá trị
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 16 trên 56.
Mẫu chỉ số dưới mặc định là nền tảng cho hai dạng thường gặp.
Bộ đếm tần suất: đếm số lần mỗi khóa xuất hiện.
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]Phân nhóm: gom các giá trị theo một khóa được suy ra:
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"]]Giá trị mặc định cho trường hợp phân nhóm là một mảng rỗng. Giá trị default: chỉ được dùng khi thiếu khóa, sau đó vế phải thay đổi trực tiếp mục đó.
Thử thách
Trung bìnhĐọc một dòng đầu vào: danh sách các từ được phân tách bằng dấu phẩy.
In ra theo thứ tự sau:
- Mỗi độ dài từ xuất hiện trong đầu vào trên một dòng riêng, sắp xếp từ ngắn nhất đến dài nhất, theo định dạng
<length>: <count>, trong đócountlà số từ có độ dài đó Most common length: <n>, trong đónlà độ dài có số lần xuất hiện nhiều nhất. Nếu hòa, chọn độ dài ngắn hơn.
Với đầu vào hi,hello,yo,hey,bonjour,bye, đầu ra là:
2: 2
3: 2
5: 1
7: 1
Most common length: 2(Độ dài 2 và 3 đều xuất hiện hai lần. Khi hòa, chọn độ dài ngắn hơn, nên 2 được chọn.)
Tự làm thử
let words = readLine()!.components(separatedBy: ",")
// TODO: đếm số từ theo độ dài; in ra kết quả đã sắp xếp; in ra độ dài phổ biến nhất (nếu bằng nhau, chọn độ dài ngắn hơn)
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng thực thi
1Chuỗi chuyên sâu
Đếm và chỉ sốChữ hoa, chữ thường và xóa khoảng trắngTìm kiếm trong chuỗiTách và nối chuỗiThay thế chuỗi conÔn tập: Kiểm tra tên người dùng4Tập hợp
Tạo tập hợpPhép hợp và phép giaoPhép trừ và hiệu đối xứngTập con và tập hợp conÔn tập: Bộ lọc thẻ7Dự án: Theo dõi thói quen
Tổng quan dự ánĐánh dấu hoàn thành10Dự án: bộ máy trắc nghiệm
Tổng quan dự ánĐặt câu hỏiTự luyện tập: Playground Swift