📅  最后修改于: 2023-12-03 15:05:26.291000             🧑  作者: Mango
Swift中的字典是一种用于存储键值对的集合类型。每个键都必须是唯一的,但值可以是重复的。字典的实现是基于哈希表 (hash table),可以提供非常高效的查找和插入操作。
在Swift中,我们可以使用字典字面量(Dictionary literal)或初始化方法来创建一个字典:
// 使用字典字面量来创建字典
var numbers: [String: Int] = ["one": 1, "two": 2, "three": 3]
// 使用初始化方法来创建字典
var emptyDict = [Int: String]()
var cities = Dictionary<String, String>()
上述代码创建了三个不同类型的字典。第一个使用了字典字面量,键是字符串类型,值是整型;第二个使用了字典的初始化方法,键是整型,值是字符串类型;第三个同样使用了初始化方法,但是在声明时将类型省略了,Swift会自动推断类型为 [String: String]
。
我们可以使用下标语法来访问并修改字典中的值:
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
airports["YYZ"] // "Toronto Pearson"
airports["LHR"] = "London Heathrow"
airports // ["YYZ": "Toronto Pearson", "DUB": "Dublin", "LHR": "London Heathrow"]
在上面的例子中,我们使用下标语法获取到了字典中 "YYZ"
对应的值。然后我们通过下标语法添加了一个新的键值对 "LHR": "London Heathrow"
。
我们也可以在字典中使用 updateValue(_:forKey:)
方法来设置或者更新一个键值对。该方法会返回之前的值,仅当字典中不存在此键时,返回值为 nil
:
let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB")
oldValue // "Dublin"
在上述代码中,我们更新了键 "DUB"
对应的值为 "Dublin Airport"
,之前的值是 "Dublin"
,并将旧值赋给了常量 oldValue
。
我们还可以使用 removeValue(forKey:)
方法来从字典中删除一个键值对。该方法会返回被删除的值,如果字典中不存在此键,则返回值为 nil
:
let removedValue = airports.removeValue(forKey: "DUB")
removedValue // "Dublin Airport"
Swift中的字典是无序的,因此我们无法使用for-in循环来按顺序遍历字典中的键值对。如果我们需要按顺序遍历,我们可以先将字典中的键或值进行排序,然后再对排序后的内容进行遍历。
for key in airports.keys { // 遍历键
print(key)
}
for value in airports.values { // 遍历值
print(value)
}
for (key, value) in airports { // 遍历键值对
print("\(key): \(value)")
}
在上述代码中,我们使用了字典的 keys
和 values
属性来进行键和值的遍历。最后一种遍历方式可以同时遍历字典中的键和值,通过解构元组的方式分别获取键和值。
Swift中的字典是一种高效的存储键值对的集合类型,提供了查找和插入操作的高性能实现。我们可以使用字典字面量和初始化方法来创建不同类型的字典,并可以通过下标语法、方法等来进行插入、查找、删除等操作。最后,我们介绍了如何使用不同的方式来遍历字典中的键、值、键值对。