Menu
CoddyTech

更新字典

本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 14 课,共 56 课。

向字典中写入值的方式和读取值一样:使用下标。

var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3                // 添加键
prices["apple"] = 2                // 更新已有的键
prices["apple"] = nil              // 删除键

两个命名方法可以更明确地完成相同的操作:

prices.updateValue(5, forKey: "milk") // 返回原来的值,或 nil
prices.removeValue(forKey: "bread")  // 返回被移除的值,或 nil

这些命名方法会返回之前的值,这在你需要知道该键是否已存在时很有用。

上一课介绍的默认下标模式与变更操作完美结合,这样你就能构建计数器,而无需编写 if:

var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
    counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]
challenge icon

挑战

中等

读取一行输入:一组以逗号分隔、用于操作初始字典的操作。每个操作都是以下之一:

  • set:<key>:<value> 添加或更新(值是整数)
  • add:<key>:<value> 将值加到现有值上(使用默认下标模式)
  • del:<key> 删除键

按顺序对初始为空的 [String: Int] 应用每个操作后,按字母顺序打印键,每行一个,格式为 <key>=<value>。

对于输入 set:a:5,add:a:3,set:b:1,del:b,add:c:2,输出为:

a=8
c=2

亲手试试

let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]

// TODO:解析每个 op 并执行 set/add/del;按键排序后输出各键及其值
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Swift 在线编辑器