Swift中的字典
- 字典定义与创建:Swift字典是无序的键值对集合,可通过指定键(如国家名)和对应的值(如首都)创建。使用
["key": "value"]
语法创建字典,键和值可以是不同数据类型。 - 操作字典元素:可向字典添加新元素、更改现有元素或访问元素。使用
dictionary[key] = value
语法添加或修改元素,removeValue()
移除特定元素。可分别通过keys
和values
属性访问所有键和值。 - 字典的遍历与其他操作:使用
for-in
循环遍历字典,count
属性获取元素数量。字典支持sorted()
,shuffled()
,contains()
,randomElement()
, 和firstIndex()
等方法进行排序、随机化、检查和获取元素。
Swift 字典是一种无序的元素集合。它以键/值对的形式存储元素。这里的键是与每个值相关联的唯一标识符。
让我们看一个例子。
如果我们想存储关于国家及其首都的信息,我们可以创建一个字典,将国家名称作为键,首都作为值。
键 | 值 |
---|---|
尼泊尔 | 加德满都 |
意大利 | 罗马 |
英格兰 | 伦敦 |
在 Swift 中创建字典
以下是我们在 Swift 中创建字典的方法。
var capitalCity = ["Nepal": "Kathmandu", "Italy": "Rome", "England": "London"]
print(capitalCity)
输出
["Nepal": "Kathmandu", "England": "London", "Italy": "Rome"]
在上述示例中,我们创建了一个名为 capitalCity
的字典。这里,
- 键 是
"Nepal"
,"Italy"
,"England"
- 值 是
"Kathmandu"
,"Rome"
,"London"
当我们运行这段代码时,可能会得到不同顺序的输出。这是因为字典没有特定的顺序。
注意: 这里的键和值都是 String
类型的。我们也可以拥有不同数据类型的键和值。
示例:Swift 字典
// 键和值为不同数据类型的字典
var numbers = [1: "One", 2: "Two", 3: "Three"]
print(numbers)
输出
[3: "Three", 1: "One", 2: "Two"]
在上述示例中,我们创建了一个名为 numbers
的字典。这里,键 是 Int
类型的,值 是 String
类型的。
向字典添加元素
我们可以使用带 []
的字典名称来向字典添加元素。例如,
var capitalCity = ["Nepal": "Kathmandu", "England": "London"]
print("初始字典: ",capitalCity)
capitalCity["Japan"] = "Tokyo"
print("更新后的字典: ",capitalCity)
print(capitalCity["Japan"])
输出
初始字典: ["Nepal": "Kathmandu", "England": "London"]
更新后的字典: ["Nepal": "Kathmandu", "England": "London", "Japan": "Tokyo"]
在上述示例中,我们创建了一个名为 capitalCity
的字典。注意这一行,
capitalCity["Japan"] = "Tokyo"
这里,我们向 capitalCity
添加了一个新元素,键:Japan
和 值:Tokyo
。
更改字典的值
我们也可以使用 []
来更改与特定键关联的值。例如,
var studentID = [111: "Eric", 112: "Kyle", 113: "Butters"]
print("初始字典: ", studentID)
studentID[112] = "Stan"
print("更新后的字典: ", studentID)
Output
Initial Dictionary: [111: "Eric", 113: "Butters", 112: "Kyle"]
Updated Dictionary: [111: "Eric", 113: "Butters", 112: "Stan"]
在上面的示例中,我们创建了一个名为 studentID
的字典。最初,与键 112
相关联的值是 "Kyle"
。现在请注意以下代码行,
studentID[112] = "Stan"
这 里,我们将与键 112
相关联的值更改为 "Stan"
。
从字典中访问元素
在 Swift 中,我们可以独立地访问字典的键和值。
1. 仅访问键
我们使用 keys
属性从字典中访问所有的键。例如,
var cities = ["Nepal":"Kathmandu", "China":"Beijing", "Japan":"Tokyo"]
print("字典: ", cities)
// cities.keys 返回 cities 的所有键
var countryName = Array(cities.keys)
print("键: ", countryName)
输出
字典: ["Nepal": "Kathmandu", "China": "Beijing", "Japan": "Tokyo"]
键: ["Nepal", "China", "Japan"]
2. 仅访问值
类似地,我们使用 values
属性从字典中访问所有的值。例如,
var cities = ["Nepal":"Kathmandu", "China":"Beijing", "Japan":"Tokyo"]
print("字典: ", cities)
// cities.values 返回 cities 的所有值
var countryName = Array(cities.values)
print("值: ", countryName)
输出
字典: ["Nepal": "Kathmandu", "China": "Beijing", "Japan": "Tokyo"]
值: ["Kathmandu", "Beijing", "Tokyo"]
从字典中移除一个元素
我们使用 removeValue()
方法从字典中移除一个元素。例如,
var studentID = [111: "Eric", 112: "Kyle", 113: "Butters"]
print("初始字典: ", studentID)
var removedValue = studentID.removeValue(forKey: 112)
print("执行 removeValue() 后的字典: ", studentID)
输出
初始字典: [113: "Butters", 111: "Eric", 112: "Kyle"]
执行 removeValue() 后的字典: [111: "Eric", 113: "Butters"]
这里,我们创建了一个名为 studentID
的字典。请注意以下代码,
var removedValue = studentID.removeValue(forKey: 112)
removeValue()
方法用于移除与键 112
关联的元素。
注意:我们也可以使用 removeAll()
函数来移除字典中的所有元素。
其他字典方法
方法 | 描述 |
---|---|
sorted() | 对字典元素进行排序 |
shuffled() | 更改字典元素的顺序 |
contains() | 检查指定元素是否存在 |
randomElement() | 返回字典中的一个随机元素 |
firstIndex() | 返回指定元素的索引 |
遍历字典
我们使用for 循环来遍历字典的元素。例如,
var classification = ["Fruit": "Apple", "Vegetable": "Broccoli", "Beverage": "Milk"]
print("键: 值")
for (key, value) in classification {
print("\(key): \(value)")
}
输出
键: 值
Vegetable: Broccoli
Beverage: Milk
Fruit: Apple
计算字典元素数量
我们可以使用 count
属性来找出字典中存在的元素数量。例如,
var studentID = [111: "Eric", 112: "Kyle", 113: "Butters"]
print(studentID.count)
输出
3
创建空字典
在 Swift 中,我们也可以创建空字典。例如,
var emptyDictionary = [Int: String]()
print("空字典: ", emptyDictionary)
输出
空字典: [:]
在上述示例中,我们创建了一个空字典。注意表达式
[Int: String]()
这里,
Int
指定字典的键将是整数类型String
指定字典的值将是字符串类型。
注意:在创建空字典时,必须指定字典的数据类型。