Skip to content

15.1_创建初始化字典

字典基础:键值对的魅力 ✨

字典是Swift中一种非常强大的集合类型,它允许你存储无序的键值对。每个值都与一个唯一的键相关联,就像现实世界中的字典一样,每个词(键)都有一个对应的解释(值)。这种结构让数据查找变得极其高效,平均查找时间复杂度仅为O(1)!

创建空字典:从零开始 🚀

你可以使用两种主要方式来创建一个空字典。第一种是使用初始化语法,明确指定键和值的类型。例如,如果你想创建一个存储字符串键和整数值的空字典,可以这样写:

swift
var emptyDictionary: [String: Int] = [:]
print("空字典:\(emptyDictionary)") // 输出:空字典:[:]

另一种更简洁的方式是让Swift进行类型推断。如果你在声明时没有提供初始值,Swift会根据上下文推断出字典的类型。

使用字典字面量初始化:快速填充数据 💡

最常见也是最方便的初始化字典的方式是使用字典字面量。你可以在创建字典的同时直接提供键值对。每个键值对之间用冒号 : 分隔,不同的键值对之间用逗号 , 分隔。

swift
var airports: [String: String] = ["YYZ": "Toronto Pearson", "LHR": "London Heathrow"]
print("机场字典:\(airports)")
// 输出:机场字典:["YYZ": "Toronto Pearson", "LHR": "London Heathrow"]

你甚至可以省略类型注解,让Swift自动推断类型。只要你提供了初始的键值对,Swift就能轻松识别出键和值的类型。

字典类型推断:Swift的智能之处 🧠

Swift的类型推断功能非常智能,可以大大简化你的代码。当你使用字典字面量初始化字典时,如果所有键的类型都相同,并且所有值的类型也相同,Swift就会自动推断出字典的类型。

swift
let namesOfIntegers = [0: "Zero", 1: "One", 2: "Two"]
// namesOfIntegers 的类型被推断为 [Int: String]
print("数字名称字典:\(namesOfIntegers)")

这种方式让代码更简洁,也更容易阅读。你不需要每次都明确写出 [KeyType: ValueType]

字典的键类型要求:哈希化是关键 🔑

字典的键必须遵循 Hashable 协议。这意味着键必须能够提供一个哈希值,以便字典能够快速地存储和查找它们。Swift的标准库类型,如 StringIntDoubleBool,默认都遵循 Hashable 协议。

  • 为什么需要哈希化? 哈希化允许字典将键映射到内存中的特定位置,从而实现O(1)的平均查找时间。
  • 自定义类型作为键: 如果你想使用自定义类型作为字典的键,你需要让你的自定义类型遵循 Hashable 协议。这通常意味着你需要实现 hash(into:) 方法和 == 运算符。

例如,你可以创建一个存储用户ID和用户名的字典,其中用户ID是 Int 类型,用户名是 String 类型。这在实际应用中非常常见,比如管理用户数据。

swift
var userScores: [String: Int] = ["Alice": 95, "Bob": 88, "Charlie": 76]
print("用户分数字典:\(userScores)")
// 输出:用户分数字典:["Alice": 95, "Bob": 88, "Charlie": 76]

通过这些方法,你可以轻松地创建和初始化字典,为你的Swift应用程序奠定坚实的数据存储基础!字典的灵活性和高效性将极大地提升你的开发体验。🚀

本站使用 VitePress 制作