遍历字典
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 15 课,共 56 课。
使用 for 遍历字典时,你会以元组的形式获得每个键值对的两部分:
let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
print("\(item) costs \(price)")
}迭代顺序不受保证。运行循环两次,你可能会看到条目的顺序不同。如果顺序很重要,请先排序:
for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
print("\(item): \(price)")
}sorted(by:) 中的表达式是一个闭包:它通过 key 属性比较两个对($0 和 $1)。闭包会在后面的章节中单独介绍,现在先把它当作对字典进行排序的方法。
另外两个实用属性:.keys 和 .values 可以分别获取仅包含键或仅包含值的集合。
挑战
简单scores 字典将学生姓名映射到 Int 分数。打印:
- 每个条目按姓名字母顺序排序,每行一个,格式为
<name>: <score> - 所有值的总和,格式为
Sum: <total>(使用.values和reduce) - 分数严格大于
70的条目数量,格式为Above 70: <count>,其中count表示符合条件的条目数
对于默认字典,输出为:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3亲手试试
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO:打印排序后的条目;对 .values 使用 reduce 求和;统计大于 70 的条目数
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Swift 在线编辑器