`

Swift字典集合

 
阅读更多

字典表示一种非常复杂的集合,允许按照某个键来访问元素。字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合。键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的。

如下图所示是字典结构的“学号与学生”集合,学号是键集合,不能重复,学生是值集合,可以重复。

 

 

提示 字典中键和值的集合是无序的,即便在添加的时候是按照顺序添加的,当取出这些键或值的时候,也会变得无序。字典集合更适合通过键快速访问值,就像查英文字典一样,键就是要查的英文单词,而值是英文单词的翻译和解释等。有的时候,一个英文单词会对应多个翻译和解释,这也是与字典集合特性对应的。

一、字典声明与初始化

Swift为字典提供了Dictionary结构体类型,我们在声明一个字典的时候可以使用下面的语句。

var studentDictionary: Dictionary<Int, String>

其中,变量studentDictionary明确指定类型为Dictionary<Int, String>。其中<Int, String>是泛型,这表明键的集合是Int类型,值的集合是String类型。

上面声明的集合事实上还不能用,还需要进行初始化,集合类型往往是在声明的同时进行初始化的。示例代码如下:

 

[html] view plaincopy
 
  1. var studentDictionary1: Dictionary<Int, String> = [102 : "张三",105 : "李四", 109 : "王五"] ①  
  2.    
  3. var studentDictionary2 = [102 : "张三",105 : "李四", 109 : "王五"]    ②  
  4.    
  5. let studentDictionary3 = [102 : "张三",105 : "李四", 109 : "王五"]            ③  
  6.    
  7. var studentDictionary4 = Dictionary<Int, String>()            ④  

 

 

上述代码都是对字典进行声明和初始化,代码①~③行采用[102 : "张三",105 : "李四", 109 : 
"王五"]的方式进行初始化,这是字典的表示方式,语法如下图所示。

 

 

这个语法类似于JSON中的对象,字典以“{”(左括号)开始,以“}”(右括号)结束。每个键后跟一个“:”(冒号),“键-值”对之间使用“,”(逗号)分隔。

第③行是let声明字典,let声明的字典是不可变字典,必须在声明的同时初始化,一旦被初始化就不可以被修改。

代码第④行是初始化一个空的字典,键集合为Int类型,值集合为String,初始化后没有任何元素。

二、字典的修改

我们可以对字典中的元素进行追加、删除和替换等修改操作。字典元素的追加比较简单,只要给一个不存在的键赋一个有效值,就会追加一个“键-值”对元素。

字典元素删除有两种方法,一种是给一个键赋值为nil,就可以删除元素;另一种方法是通过字典的removeValueForKey方法删除元素,方法返回值是要删除的值。

字典元素替换也有两种方法,一种是直接给一个存在的键赋值,这样新值就会替换旧值;另一种方法是通过updateValue(forKey:)方法替换,方法的返回值是要替换的值。

下面我们来看一个示例:

 

[html] view plaincopy
 
  1. var studentDictionary = [102 : "张三",105 : "李四", 109 : "王五"] ①  
  2.    
  3. studentDictionary[110] = "董六"           ②  
  4.    
  5. println("班级人数:\(studentDictionary.count)")          ③  
  6.    
  7. let dismissStudent = studentDictionary.removeValueForKey(102)       ④  
  8.    
  9. println("开除的学生:\(dismissStudent)")          ⑤  
  10.    
  11. studentDictionary[105] = nil            ⑥  
  12.    
  13. studentDictionary[109] = "张三"           ⑦  
  14.    
  15. let replaceStudent = studentDictionary.updateValue("李四", forKey:110)    ⑧  
  16. println("被替换的学生是:\(replaceStudent)")            ⑨  

 

 

输出结果如下:

班级人数:4

开除的学生:张三

被替换的学生是:董六

上述代码第①行是声明并初始化字典studentDictionary,第②行代码追加键为110、值为“董六”的一个元素,第③行代码是打印班级学生的人数,count是字典的属性,返回字典的长度。

第④行和第⑥行都是删除元素,第④行代码是使用removeValueForKey方法删除元素,dismissStudent是返回值,它保持了被删除的元素。因此我们在第⑤行打印输出dismissStudent是“开除的学生:张三”。第⑥行studentDictionary[105] = nil语句是直接赋值nil也可以删除105对应的元素。

第⑦行和第⑧行都是替换旧元素,如果第⑦行的键不存在,那么结果是在字典中追加一个新的“键-值”对元素。第⑧行是通过updateValue(forKey:)方法替换元素,方法的返回值是“董六”,第⑨行代码是打印“被替换的学生是:董六”。

三、字典遍历

字典遍历集合也是字典的重要操作。与数组不同,字典有两个集合,因此遍历过程可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。这些遍历过程都是通过for in循环实现的。

下面是遍历字典的示例代码:

 

[html] view plaincopy
 
  1. var studentDictionary = [102 : "张三",105 : "李四", 109 : "王五"]  
  2.    
  3. println("---遍历键---")  
  4. for studentID in studentDictionary.keys {           ①  
  5.     println("学号:\(studentID)")  
  6. }  
  7.    
  8. println("---遍历值---")  
  9. for studentName in studentDictionary.values {           ②  
  10.     println("学生:\(studentName)")  
  11. }  
  12.    
  13. println("---遍历键:值---")  
  14. for (studentID, studentName) in studentDictionary {     ③  
  15.     println ("\(studentID) : \(studentName)")  
  16. }  

 

 

运行结果如下:

---遍历键---

学号:105

学号:102

学号:109

---遍历值---

学生:李四

学生:张三

学生:王五

---遍历键:---

105 : 李四

102 : 张三

109 : 王五

从上述代码可见,我们有3种方法遍历字典,它们都采用了for in语句。第①行代码遍历了键集合,其中keys是字典属性,可以返回所有键的集合。第②行代码遍历了值的集合,其中values是字典属性,可以返回所有值的集合。第③行代码遍历取出的字典元素,(studentID, studentName)是元组类型,它是由键变量studentID和值变量studentName组成的。

 

 

更多内容请关注国内第一本Swift图书《Swift开发指南》
本书交流讨论网站:http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485

 

 

欢迎关注智捷iOS课堂微信公共平台

分享到:
评论

相关推荐

    swift-运行时字典转模型模型快速转字典

    字典是一种无序的键值对集合,它允许我们通过键(Key)来访问对应的值(Value)。在处理网络API返回的数据时,通常会得到一个`[String: Any]`类型的字典,其中`Any`可以是任何类型的数据。 其次,自定义模型是根据...

    Swift:集合类型和使用示例

    介绍Swift中的三种集合类型,包括数组、字典和集合,以及它们的基本操作和特点。数组是一种有序的、可重复的数据类型,常用于存储一组相关的数据。字典是一种无序的、键值对存储的数据类型,常用于存储一些关联的...

    Swift集合类型优化

    集合类型是swift语言的核心抽象概念之一,标准库中的主要集合类型包括:数组,集合,字典,从小脚本到大应用,它们几乎被用在所有的Swift程序中;该书讲解了如何设计一个新的通用的集合类型,怎样效仿标准库中已经...

    Swift从入门到精通视频教程下载第6章 Swift集合类型——数组和字典.zip

    在Swift编程语言中,集合类型是数据存储的核心概念,它包括数组(Array)和字典(Dictionary)。本章“Swift集合类型——数组和字典”深入讲解了这两个关键的内置数据结构,帮助开发者掌握如何有效地存储和管理数据...

    Swift视频教程:集合类型 字典创建和初始化

    在Swift编程语言中,集合类型是数据存储的关键组成部分,它包括数组(Array)和字典(Dictionary)。本视频教程将重点讲解字典的创建和初始化,这是理解和编写高效Swift代码的重要部分。 字典是一种无序的数据结构...

    Swift教程之集合类型详解

    Swift教程之集合类型详解主要关注的是Swift编程语言中两种核心的集合类型——数组和字典。数组是一种存储同类型元素的有序集合,而字典则是一个无序的键值对集合,通过唯一的键来访问对应的值。 数组在Swift中扮演...

    SwifterSwift:500 多个 Swift Extension 集合,提高你的生产率.zip

    SwifterSwift项目的核心理念是通过集合各种实用的Swift扩展,帮助开发者快速实现常见的任务,减少重复工作,提高代码质量。这些扩展涵盖了字符串处理、数组操作、日期时间管理、URL和HTTP请求等多个领域,几乎满足了...

    objc.io 集合类型优化swift

    在Swift编程语言中,集合类型是开发者日常工作中不可或缺的一部分,包括数组(Array)、字典(Dictionary)和集合(Set)。这些数据结构的高效使用对于应用性能有着直接影响。"objc.io 集合类型优化swift" 提供了...

    Swift学习笔记与资料集合

    本资源集合包含了一系列关于Swift学习的宝贵资料,旨在帮助初学者快速掌握这一现代编程语言。 首先,"Apple Swift编程语言入门教程.doc" 是官方提供的基础教程,它详细介绍了Swift的基础语法和特性。你可以从中了解...

    探讨Swift数组和字典

    Swift中的字典是一种键值对的集合,提供关联数据的快速查找。字典的键必须是唯一的,但值可以重复。 1. 声明与创建: 字典使用`[:]`语法创建,例如: ```swift var dictionary = ["key1": "value1", "key2": ...

    swift菜鸟入门视频教程-04-集合类型

    本教程将引导初学者深入理解Swift中的两种主要集合类型:数组(Array)和字典(Dictionary),以及它们在实际编程中的应用。 数组是有序的数据集合,每个元素都有一个特定的索引。在Swift中,数组是一个泛型类型,...

    Swift常用的序列和集合算法_Swift_下载.zip

    Swift中最常见的集合类型是数组(Array)和字典(Dictionary)。 1. 数组:有序集合,可以通过索引访问元素。Swift的数组支持动态大小调整,并提供了多种操作,如添加、删除元素,以及排序。 2. 字典:无序键值对的...

    Swift-model(字典数组模型)

    在Swift编程语言中,字典数组模型是一种常见的数据结构,用于处理和操作包含多个字典的数据集合。这种数据结构在iOS应用开发中尤其常见,特别是在处理JSON数据时,因为服务器通常返回字典形式的响应。本篇文章将深入...

    swift创建数据库、模型转字典、封装选择视图

    Swift中的字典是一种可变的键值对集合,常用于网络请求的响应数据解析。模型转字典通常使用Codable协议或JSONSerialization。例如: 1. Codable协议:定义一个遵循Decodable的结构体或类,然后使用JSONDecoder进行...

    Swift5.1中文版.pdf

    Swift的集合类型包括数组(Array)、集合(Set)和字典(Dictionary)。数组是有序的,集合是无序且唯一值的集合,字典则是键值对的集合。Swift中的集合是泛型的,允许指定存储值的类型,并且它们都是安全的、自量化...

    Swift语言学习基础Demo集合

    9. **数组与字典**:Swift提供了两种内置的集合类型——数组(`Array`)和字典(`Dictionary`),用于存储和操作有序或无序的数据集合。 10. **泛型**:泛型允许我们编写可重用的代码,这些代码可以处理多种数据...

    OrderedDictionary:Swift中的有序字典数据结构实现

    OrderedDictionary是Swift中有序字典数据结构的轻量级实现。 OrderedDictionary结构是一个通用集合,结合了Swift标准库中Dictionary和Array数据结构的功能。 像Dictionary一样,它存储每个键都是唯一的键/值对,并...

    Swift3.0.1文档_The Swift Programming Language

    2. 字典:字典是一种键值对的集合,通过键来访问对应的值。 四、类与结构体 1. 结构体与枚举:结构体是值类型,而枚举提供了一种强大的方式来定义一组相关的值。 2. 类:类是引用类型,支持继承、多态和属性观察...

    Swift教程:Swift基础,第一个Swift程序

    数组(Array)用于存储同类型元素的有序集合,而字典(Dictionary)则是无序的键值对集合。 9. **类型推断**: Swift具有强大的类型推断能力,可以根据初始值自动推断出变量或常量的类型。 10. **Optionals**: ...

Global site tag (gtag.js) - Google Analytics