Swift语言Dictionary集合类型的创建、遍历
Swift 的字典类型是无序集合类型
Dictionary创建
一、创建空字典
//创建空字典
var namesOfIntNum:Dictionary<Int,String> = [Int:String]()//[key:Int,value:String]
//判断字典是否为空 (count是否为0)
if namesOfIntNum.isEmpty{
print("The namesOfIntNum dictionary is empty.")
}else {
print("The namesOfIntNum dictionary is not empty.")
}
//打印: The namesOfIntNum dictionary is empty.
namesOfIntNum[10] = "ten"// namesOfIntegers 现在包含一个键值对
使用空字典字面量来创建一个空字典
//如果上下文已经提供了类型信息,我们可以使用空字典字面量来创建一个空字典,记作[:](中括号中放一个冒号)
namesOfIntNum = [:]
// namesOfIntNum 又成为了一个 [Int: String] 类型的空字典
二、字面量创建字典
//用字典的字面量创建字典
//[key:value,key:value]
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]//airports这个字典字面量的任务是构造拥有两个初始数据项的字典,字典被声明为一种[String: String]类型,这意味着这个字典的键和值都是String类型
和数组一样,我们在用字典字面量构造字典时,如果它的
键和值都有各自一致的类型,那么就不必写出字典的类型
airports字典也可以用这种简短方式定义:
因为这个语句中所有的键和值都各自拥有相同的数据类型,Swift 可以推断出Dictionary<String, String>是airports字典的正确类型
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
//因为这个语句中所有的键和值都各自拥有相同的数据类型,Swift 可以推断出Dictionary<String, String>是airports字典的正确类型
字典遍历
一、for - in
遍历
字典的遍历,使用for - in
循环来遍历字典中的键值对,每个字典中的数据项都以(key,value)元组的形式返回
,可以使用临时常量或者变量来分解这些元组
//用字典的字面量创建字典
let airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
//字典的遍历,使用for - in 循环来遍历字典中的键值对,每个字典中的数据项都以(key,value)元组的形式返回,可以使用临时常量或者变量来分解这些元组
for (airportKey,airportName) in airports {
print("字典遍历的结果:\(airportKey):\(airportName)")
//打印
/*
字典遍历的结果:YYZ:Toronto Pearson
字典遍历的结果:DUB:Dublin
*/
}
二、enumerated
遍历
字典使用enumerated()
方法遍历 回将原有的键值对(key-value)以元组(index,(key,value))
的形式返回其中的index是无序的
//字典使用enumerated()方法遍历 回将原有的键值对(key-value)以元组(index,(key,value))的形式返回其中的index是无序的
let airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
for (index,(key,value)) in airports.enumerated(){
print("遍历结果:\(index)-\(key):\(value)")
//打印
/*
遍历结果:0-YYZ:Toronto Pearson
遍历结果:1-DUB:Dublin
*/
}
三、keys/values
遍历(可以提取字典的键值(key-value)对,并转换为独立的数组)
可以单独遍历出字典里的所有keys 或者是 values值
当只是需要使用某个字典的键集合或者值集合来作为某个接收Array实例的 API 的参数,可以直接使用keys或者values属性构造一个新数组
遍历出所有的key
let airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
//遍历出所有的key
let airportKeys = airports.keys
for airportKey in airportKeys{//获取字典中所有的键
print("airport key:\(airportKey)")
//打印
/*
airport key:YYZ
airport key:DUB
*/
}
获取字典里的keys构造成数组
let airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
//获取字典里的keys构造成数组
let airportKeyArray = [String](airports.keys)//获取字典里的键构造成新数组“airportKeyArray”
print("airportAllKeys:\(airportKeyArray)")
//打印:airportAllKeys:["YYZ", "DUB"]
遍历出所有的value
let airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
let airportsValues = airports.values
for airportName in airportsValues {//获取字典中的所有值
print("airport name:\(airportName)")
//打印
/*
airport name:Toronto Pearson
airport name:Dublin
*/
}
获取字典里的所有的values构造成数组
let airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
let airportNameArray = [String](airports.values)//获取字典里的所有的值构造成新的数组“airportNameArray”
print("airportAllValues:\(airportNameArray)")
//打印:airportAllValues:["Toronto Pearson", "Dublin"]
网友评论