Swift学习笔记之---Dictionary字典

Posted 油醋三椒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习笔记之---Dictionary字典相关的知识,希望对你有一定的参考价值。

Dictionary字典类型

对于集合类型,在声时务必明确其类型,字典也是,字典由键和值两个部分组成,在声明字典时,也需要明确其键和值的类型。由两种方式可以进行字典的声明或者创建,示例代码如下:

// 声明字典[param1: param2]这种结构用于表示字典类型,param1为键类型,param2为值类型
var dic1: [Int: String]
// 这种方式和[:]效果一样,dic2与dic1为相同的类型
var dic2:Dictionary<Int, String>
// 字典创建与赋值 
dic1 = [1: "1", 2: "2"]
dic2 = Dictionary(dictionaryLiteral: (1, "1"), (2, "2"))
// 创建字典时候,可以不显示声明字典的类型,可以直接赋初值来使编译器自动推断
var dic3 = [1: "1", 2: "2"]
// 创建空字典
var dic4: [Int:Int] = [:]
var dic5 = Dictionary<Int, Int> = Dictionary()

字典的键值是唯一的,字典支持使用isEmpty与count来判断是否为空并获取元素个数,示例代码如下:

// 获取字典中的元素个数
dic1.count
// 判断字典是否为空
if dic4.isEmpty 
  print("字典为空")

通过具体键可以获取与修改对应的值,示例如下:

// 通过键操作值
// 获取值 
dic1[2]
// 修改值
dic1[1] = "0"
// 添加一对新的键值
dic1[4] = "4"

在对某个键进行赋值时,如果这个键存在,则会进行值的更新,如果这个键不存在,则会添加一对新的键值。然而在开发中,很多情况下需要对一个存在的键进行更新操作,如果这个键不存在,则不添加新键值对,要实现这种效果,可以使用Dictionary的更新键值方法,示例代码如下:

dic1.updateValue("1", forKey: 1)

updateValue(value:forkey:)方法用于更新一个已经存在的键值对,其中第1个参数为新值,第2个参数为要更新的键。这个方法在执行时会返回一个Optional类型的值,如果字典中此键存在,则会更新成功,并将键的旧值包装成Optional值返回,如果此键不存在,则会返回nil。在开发中,常常使用if-let结构来处理,示例如下:

if let oldValue = dic1.updateValue("1", forKey: 1) 
  print("Old Value is \\(oldValue)")

其实在通过键来获取字典中的值时,也会返回一个Optional类型的值,如果键不存在,则此Optional值为nil,因此也可以使用if-let结构来保证程序的安全性,示例如下:

if let value = dic1[1] 
  print("The Value is \\(value)")

可以实现对字典中键对值的删除操作:

// 通过键删除某个键值对
dic1.removeValue(forKey: 1)
// 删除所有键值对
dic1.removeAll()

在对字典进行遍历操作时,可以遍历字典中所有键组成的集合,也可以遍历字典中所有值组成的集合,通过Dictionary实例的keys属性与values属性分别可以获取字典的所有键与所有值,示例代码如下:

// 通过键来遍历字典
for item in dic2.Keys 
  print(item)

// 通过值来遍历字典
for item in dic2.values 
  print(item)

// 直接遍历字典
for item in dic2 
  print(item)

for (key, value) in dic2 
  print("\\(key) : \\(value)")

在进行字典键或者值遍历的时候,也支持对其进行排序遍历,示例如下:

// 从大到小排序遍历集合
for item in dic1.keys.sorted(by: >) 
  print(item)

以上是关于Swift学习笔记之---Dictionary字典的主要内容,如果未能解决你的问题,请参考以下文章

Swift学习笔记之---Dictionary字典

《从零开始学Swift》学习笔记(Day 16)——字典集合

Swift学习笔记之---Array数组

Swift学习笔记之---Array数组

Swift学习笔记之---Array数组

Python每日学习笔记之Dictionary