iOS开发 - 「Swift 学习」Dictionary集合类型创建、遍历

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"]


\color{gray}{努力码字,只为遇见你?!😏}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容