• Swift学习笔记三(Dictionary 篇)


    1 Dictionary 概念

    • 字典储存无序的互相关联的同一类型的键和同一类型的值的集合。
    • 字典类型的全写方式 Dictionary,简写方式 [Key: Value],建议使用简写方式。
    • 字典的 key 必须是可哈希的。

    Dictionary创建

    2.1 初始器创建方式

    var dictionary = Dictionary<String,Int>()
    

    2.2 简写创建方式

    var dictionary = [String,Int]()
    

    2.3 字面量创建方式

    var dictionary: Dictionary<String,Int> = [:]
    

    2.4 Dictionary的方法

    • 可以使用 count 只读属性来找出 Dictionary 拥有多少元素。
    • 使用布尔量 isEmpty 属性检查字典是否为空。

    3 Dictionary的遍历

    3.1 For-In 循环

    • 可以通过访问字典的 keys 和 values 属性来取回可遍历的字典的键或值的集合。
    • Swift 的 Dictionary 类型是无序的。要以特定的顺序遍历字典的键或值,使用键或值的
      sorted() 方法。
    1. let dictionary = ["zhangsan": 7,"lisi": 8,"wangwu": 9]
    2. for(key,value) in dictionary{
    3. print("name = \(key) , age = \(value)")
    4. }
    5. /**
    6. name = zhangsan , age = 7
    7. name = lisi , age = 8
    8. name = wangwu , age = 9
    9. */

    1. let dictionary = ["zhangsan": 7,"lisi": 8,"wangwu": 9]
    2. for key in dictionary.keys.sorted(){
    3. print("name = \(key),age = \(dictionary[key])")
    4. }
    5. /**
    6. name = lisi,age = Optional(8)
    7. name = wangwu,age = Optional(9)
    8. name = zhangsan,age = Optional(7)
    9. */

    Dictionary的常用操作

    4.1 添加或更新元素

    • 使用下标添加或更新元素。
    • 使用 updateValue(_:forKey:) 方法添加或更新元素,返回一个字典值类型的可选项值。

    4.2移除元素

    • 使用下标脚本语法给一个键赋值 nil 来从字典当中移除一个键值对。
    • 使用 removeValue(forKey:)来从字典里移除键值对。这个方法移除键值对如果他们存在的
      话,并且返回移除的值,如果值不存在则返回 nil 。

    4.3 合并两个字典

    • merge(_:uniquingKeysWith:)
    1. var dictionary = ["zhangsan": 7,"lisi": 8]
    2. dictionary.merge(["zhangsan":17,"wangwu": 19]) {(current, _) in current}
    3. print(dictionary)
    4. dictionary.merge(["zhagnsan": 27,"niuliu": 30]) {(current, _) in current}
    5. print(dictionary)
    6. /**
    7. ["lisi": 8, "zhangsan": 7, "wangwu": 19]
    8. ["niuliu": 30, "zhagnsan": 27, "wangwu": 19, "lisi": 8, "zhangsan": 7]
    9. */

    4.4 fifirstIndex

    • 虽然字典是无序的,但是每个kv对在扩容之前的位置是稳定的。如果你需要保持顺序的kv对 可以使用 KeyValuePairs。
  • 相关阅读:
    在上一家公司待的时间很短,面试中会成为扣分项吗,该如何应对?
    TensorBoard的简单使用(pytorch)
    修改nginx返回的默认的server信息
    Nacos学习服务发现(二)之服务注册
    最佳实践-使用Github Actions来构建跨平台容器镜像
    【2022河南萌新联赛第(四)场:郑州轻工业大学】【部分思路题解+代码解析】
    cpu天梯图2022年11月 cpu排行榜天梯图2022
    R语言作业wine 数据
    Spring MVC(一)— DispatcherServlet
    【杂七杂八】Windows和Linux怎么配置环境变量
  • 原文地址:https://blog.csdn.net/qq_35460159/article/details/132780175