swift字典用法和操作全解 – Swift最新教程

上一章Swift教程请查看:swift集合的使用和操作
在本教程中,你将了解dictionary字典是什么,以及如何创建字典dictionary和字典dictionary中的一些常见操作。
在前面Swift数组的文章中,我们学习了如何在一个变量/常量中存储多个值,在本文中,我们将讨论如何将数据/值存储为键值对。
什么是字典dictionary?dictionary就是一个容器,它可以以无序的方式将多个数据作为键-值对保存。
每个值都与一个唯一的键相关联,并以集合的形式将数据存储在无序列表中,也就是说,你不会以与在字典中定义的项相同的顺序获取元素。
当需要使用集合中的某个标识符查找值时,可以使用dictionary而不是array。假设你想搜索一个国家的首都。在这种情况下,你将创建一个包含关键字key为国家以及价值资本value为首都城市的字典。现在,通过使用关键国家进行搜索,可以从集合中获得首都。
简单来说,就是将一个键与一个值配对,在上面的例子中,我们将一个国家与它的首都配对。
如何在Swift中声明字典?你可以通过在方括号[]中指定key:value数据类型来创建一个空字典。
例1:声明一个空字典

let emptyDic:[Int:String] = [:] print(emptyDic) OR let emptyDic:Dictionary< Int, String> = [:] print(emptyDic)

在上面的程序中,我们用Int类型的键和String类型的值声明了一个类型为dictionary的常量emptyDic,并用0值初始化它。
或者
由于Swift是一种类型推断语言,你也可以直接创建dictionary而不需要指定数据类型,但是必须用一些值初始化,这样编译器才能推断出它的类型:
例2:用一些值声明一个字典
let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] print(someDic)

在上面的程序中,我们声明了一个字典,但没有显式定义类型,而是使用一些默认元素进行初始化。
元素在键:值对中,键的类型是字符串,值的类型是Int。由于dictionary是一个无序列表,所以print(someDic)以不同于定义的顺序输出值。
示例3:用两个数组创建字典
我们还可以使用数组创建一个字典。
let customKeys = ["Facebook", "Google", "Amazon"] let customValues = ["Mark", "Larry", "Jeff"] let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary)

在上面的程序中,zip(customKeys,customValues)创建一个新的元组序列,每个元素表示来自customKeys和customValues的值。
现在,我们可以将这个序列传递给Dictionary(uniqueKeysWithValues:)初始化器并创建一个新Dictionary。因此,print(newDictionary)用两个数组中的元素输出一个新字典。
如何在Swift中访问字典元素?作为数组,可以使用下标语法访问字典的元素,你需要将要访问的值的键包含在紧挨着字典名称的方括号中。
例4:访问字典的元素
let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] print(someDic["a"]) print(someDic["h"])

你还可以使用for-in循环访问字典的元素。
例5:使用for-in循环访问字典的元素
let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] for (key,value) in someDic { print("key:\(key) value:\(value)") }

如何在Swift中修改字典元素?可以使用下标语法在dictionary中添加元素,你需要将新键作为下标索引,并将类型的新值赋给Dictionary。
例6:在字典中设置元素
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] someDictionary["Japan"] = "Tokyo" print(someDictionary)

【swift字典用法和操作全解 – Swift最新教程】在上面的例子中,我们使用下标语法在给定的字典中创建了一个新的键值对“Japan”:“Tokyo”。
你还可以使用下标语法来更改与特定键相关联的值,如下所示:
示例7:更改字典的元素
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] someDictionary["Nepal"] = "KATHMANDU" print(someDictionary)

一些有用的内置字典功能和属性isEmpty
此属性确定字典是否为空。如果字典不包含任何值,则返回true,否则返回false。
例8:isEmpty是如何使用的?
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.isEmpty)

first
此属性用于访问字典的第一个元素。
例9:first如何使用?
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.first)

count
此属性返回字典中元素的总数(键值对)。
例10:count是如何使用的?
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.count)

keys
此属性返回字典中的所有键。
例11:keys是如何工作的?
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let dictKeys= Array(someDictionary.keys) print(dictKeys)

类似地,你可以使用值来获取字典中的所有值。
removeValue
这个函数从字典中删除并返回键指定的值。这两个键值对都将从字典中删除。
例12:removeValue()如何工作?
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val= someDictionary.removeValue(forKey: "Nepal") print(val) print(someDictionary)

类似地,你也可以使用removeAll函数来清空字典。
使用字典的注意事项1. 虽然在swift中可以使用下标语法访问字典元素,你必须确保关键字在于索引范围内,否则你会得到一个空值。让我们看看这个例子:
例13:key必须存在
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val= someDictionary["Japan"] print(val)

在上面的程序中,没有key Japan。因此,当你尝试访问键“Japan”的值时,你将得到一个nil值。
2. 同样,在Swift中键值是大小写敏感的,所以必须确保使用正确的大小写键/值。否则,你会得到一个空值。让我们看看这个例子:
示例14:键是大小写敏感的
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val= someDictionary["nepal"] print(val)

在上面的项目中,没有nepal关键字。因此,当你尝试访问关键字“nepal”的值时,你得到一个nil值。
3.如果给定键的值不存在,也可以提供默认值。让我们看看这个例子:
例12:不存在的键的默认值
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val= someDictionary["nepal", default:"Not Found"] print(val)

在上面的程序中,我们指定了一个在访问字典时默认参数中Not Found的值。如果键的值不存在,则返回默认值,否则返回值。
在我们的例子中,关键字“nepal”不存在,因此程序返回Not Found。

    推荐阅读