📜  Swift-字典(1)

📅  最后修改于: 2023-12-03 15:05:26.291000             🧑  作者: Mango

Swift-字典


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)")
}

在上述代码中,我们使用了字典的 keysvalues 属性来进行键和值的遍历。最后一种遍历方式可以同时遍历字典中的键和值,通过解构元组的方式分别获取键和值。

总结

Swift中的字典是一种高效的存储键值对的集合类型,提供了查找和插入操作的高性能实现。我们可以使用字典字面量和初始化方法来创建不同类型的字典,并可以通过下标语法、方法等来进行插入、查找、删除等操作。最后,我们介绍了如何使用不同的方式来遍历字典中的键、值、键值对。