Menu
CoddyTech

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ị.

challenge icon

Thử thách

Dễ

Từ điển scores ánh xạ tên học sinh đến điểm số Int. In ra:

  1. 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
  2. Sum: <total> của tất cả giá trị (dùng .values và reduce)
  3. Above 70: <count>, trong đó count là số mục có điểm lớn hơn 70

Với từ điển mặc định, đầu ra là:

Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3

Tự 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
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Swift