Swift科普文《字典》
Swift科普文《字典》

Swift科普文《字典》

字典(Dictionary)是一种键值对(key-value)类型的数据结构。它允许你通过一个唯一的键(key)来存取和管理数据。可以把它想象成一本词典,通过单词(键)来找到对应的解释(值)。

基础操作

1、dict[key] = value:插入或更新键值。

2、dict[key]:访问值(可选类型)。

3、dict.removeValue(forKey:):删除某个键。

4、dict.keys / dict.values:获取所有键或所有值。

5、dict.count / dict.isEmpty:数量与是否为空。

var dict = ["a": 1, "b": 2]
dict["c"] = 3           // 添加键值对
dict["a"] = 10          // 更新值
dict.removeValue(forKey: "b")

合并相关

1、merge(_:uniquingKeysWith:):合并另一个字典到当前字典(修改原字典)。

2、merging(_:uniquingKeysWith:):合并返回一个新字典(不会改变原字典)。

var a = ["x": 1, "y": 2]
let b = ["y": 3, "z": 4]

a.merge(b) { $1 }       // a 变为 ["x": 1, "y": 3, "z": 4]
let c = a.merging(b) { $0 } // 新字典,a 不变

过滤和映射

1、filter { … }:筛选键值对。

2、map { … }:映射为新数组。

3、mapValues { … }:对所有值进行转换,返回字典。

4、compactMapValues { … }:转换并去除 nil 值,返回字典。

let dict = ["a": 1, "b": 2, "c": 3]

let even = dict.filter { $0.value % 2 == 0 }  // ["b": 2]
let valueSquared = dict.mapValues { $0 * $0 } // ["a": 1, "b": 4, "c": 9]

分组

Dictionary(grouping:by:):按条件分组为字典 [Key: [Value]]。

其他方法

1、updateValue(_:forKey:):设置值并返回旧值(若有)。

2、index(forKey:):返回指定键的索引(少见)。

3、forEach:遍历字典。

4、reduce(into:):自定义聚合处理(进阶)。

实际应用

1、创建字典

// 创建一个空字典
var emptyDict: [String: Int] = [:]

// 创建一个带有初始值的字典
var personAge: [String: Int] = ["Alice": 25, "Bob": 30]

2、访问字典中的值

可以通过键来获取值:

let age = personAge["Alice"] // age is Optional(25)
// 使用默认值来避免 Optional
let age = personAge["Charlie", default: 0] // age is 0

3、更新字典中的值

// 添加或更新一个键值对
personAge["Alice"] = 26 // 更新 Alice 的年龄
personAge["Charlie"] = 22 // 添加新的键值对

// 使用 updateValue(_:forKey:) 方法
personAge.updateValue(28, forKey: "Bob") // 更新 Bob 的年龄

4、删除字典中的键值对

personAge["Alice"] = nil // 删除键为 "Alice" 的键值对

// 使用 removeValue(forKey:) 方法
personAge.removeValue(forKey: "Bob")

5、遍历字典

可以使用 for-in 循环遍历字典中的所有键值对:

for (name, age) in personAge {
    print("\(name) is \(age) years old")
}

// 只遍历键
for name in personAge.keys {
    print("Name: \(name)")
}

// 只遍历值
for age in personAge.values {
    print("Age: \(age)")
}
   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注