跳到主要内容

Swift中的字典

提示
  1. 字典定义与创建:Swift字典是无序的键值对集合,可通过指定键(如国家名)和对应的值(如首都)创建。使用["key": "value"]语法创建字典,键和值可以是不同数据类型。
  2. 操作字典元素:可向字典添加新元素、更改现有元素或访问元素。使用dictionary[key] = value语法添加或修改元素,removeValue()移除特定元素。可分别通过keysvalues属性访问所有键和值。
  3. 字典的遍历与其他操作:使用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 添加了一个新元素,JapanTokyo

更改字典的值

我们也可以使用 [] 来更改与特定键关联的值。例如,

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 指定字典的值将是字符串类型。

注意:在创建空字典时,必须指定字典的数据类型。