Duyệt từ điển
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 15 trên 56.
Khi lặp qua từ điển bằng for, bạn nhận được cả hai phần của mỗi cặp dưới dạng tuple:
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}Thứ tự lặp không được đảm bảo. Chạy vòng lặp hai lần, bạn có thể thấy các mục theo thứ tự khác nhau. Khi thứ tự quan trọng, hãy sắp xếp trước:
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}Biểu thức bên trong sorted(by:) là một closure: nó so sánh hai cặp ($0 và $1) dựa trên thuộc tính key của chúng. Closure sẽ có một chương riêng sau này, còn bây giờ hãy xem đây là cách sắp xếp một từ điển.
Hai thuộc tính hữu ích nữa: .keys và .values cho bạn tập hợp chỉ gồm các khóa hoặc chỉ gồm các giá trị.
Thử thách
DễTừ điển scores ánh xạ tên học sinh đến điểm số Int. In ra:
- Mỗi mục theo dạng
<name>: <score>, sắp xếp theo tên theo thứ tự bảng chữ cái, mỗi mục trên một dòng Sum: <total>của tất cả giá trị (dùng.valuesvàreduce)Above 70: <count>, trong đócountlà số mục có điểm lớn hơn70
Với từ điển mặc định, đầu ra là:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3Tự làm thử
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO: in ra các mục đã sắp xếp; tính tổng bằng reduce trên .values; đếm các giá trị > 70
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