字典的介绍

  • 字典允许按照某个键来访问元素
  • 字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合
  • 键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的
  • Swift中的字典
    • Swift字典类型是Dictionary,也是一个泛型集合
import UIKit

// 1.字典的定义
// 1>不可变字典(let)
// 注意:1:在swift中无论是数组还是字典都是使用[],但是如果[]中存放的是元素,编译器会认为是一个数组.如果[]中存放的是键值对,编译器会认为是一个字典. 2:如果字典中的value值的类型都是相同的,那么不用做类型转换,也就是不用加as [String : Any](字典和数组中都可以存放基本的数据类型,在swift中基本的数据类型也被看做是对象),如果在字典中的value值的类型都相同,则就不需要添加类型转换,转为as [String : Any] let dict = ["name" : "why", "age" : , "height" : 1.88] as [String : Any] let dictQ = ["hello":"","bhe":"","hahdfiasdf":""] // 2>可变字典(var):字典,数组,元组都是泛型集合,所以必须在初始化的时候,规定其里面的元素类型,如果规定value值是AnyObject,则对字典进行赋值的时候,dictM["age"] = 18 as AnyObject?,类型推到不能知道它是Int类型还是AnyObject类型,所以需要进行类型转换,as AnyObject?
// var dictM = Dictionary<String, AnyObject>()
var dictM = [String : AnyObject]() // 2.对可变字典的操作
// 2.1.添加元素
// dict["weight"] = 60 错误写法
dictM["name"] = "why" as AnyObject?
dictM["age"] = as AnyObject?
dictM["heihgt"] = 1.88 as AnyObject?
dictM["weight"] = as AnyObject? // 2.2.删除元素
dictM.removeValue(forKey: "name") // 2.3.修改元素
// 注意:如果有对应的key,则修改对应的value,如果没有对应的key,则添加对应的键值对
dictM["age"] = as AnyObject?
dictM // 2.4.获取元素
dictM["weight"] // 3.遍历字典
// 3.1.遍历所有的key
for key in dictM.keys {
print(key)
} // 3.2.遍历所有的value
for value in dictM.values {
print(value)
} // 3.3.遍历所有的key/value
for (key, value) in dictM {
print(key)
print(value)
} // 4.合并字典
// 注意:字典即使类型一直也不可以先加合并
let tempDict : [String : AnyObject] = ["phoneNum" : "+86 110" as AnyObject, "sex" : "男" as AnyObject] //let resultDict = tempDict + dictM for (key, value) in tempDict {
dictM[key] = value
} dictM

swift学习第七天:字典的更多相关文章

  1. Swift学习笔记七

    控制流 Swift提供了和C类似的控制流表达式,包括for.while.if.switch.当然也包括break和continue这种语句来引导控制流到某个指定点的语句. 在C的for基础上,Swif ...

  2. swift学习第五章-字典的使用

    //以下是关于字典的 //字典的格式[key:value] //字典能够存放基本类型和对象类型的 //声明一个字典 var dictionary1=["key1":"鸭鸭 ...

  3. swift学习笔记(七)自己主动引用计数

    与Object-c一样,swift使用自己主动引用计数来跟踪并管理应用使用的内存.当实例不再被使用时,及retainCount=0时,会自己主动释放是理所占用的内存空间. 注:引用计数仅适用于类的实例 ...

  4. python学习第七篇——字典访问键与值

    此程序的目的在于,正确而简单的访问字典的键与值 favorite_languages={ 'jen':['python','c'], 'sarah':['c'], 'edward':['ruby',' ...

  5. python3学习笔记七(字典)

    参照http://www.runoob.com/python3/python3-dictionary.html 字典 字典是另一种可变容器模型,且可以存储任意类型对象. dict1 = {key1:v ...

  6. python学习(七)字典学习

    #!/usr/bin/python # 字典 # 当时学java的时候, 语言基础就学了好久, 然后是各种API, 最后才是集合 # 键值对, 可变 # 1. 映射操作 D = {'food' : ' ...

  7. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  8. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  9. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

随机推荐

  1. 《深入理解java虚拟机》:类的初始化

    深入理解java虚拟机>:类的初始化 类从被载入到虚拟机内存中開始.到卸载出内存为止,它的整个生命周期包含:载入.验证.准备.解析.初始化.使用和卸载七个阶段.当中验证.准备.解析3个部分统称为 ...

  2. Button- 自定义控件添加自定义属性

    今天自定义了一个button按钮,需要添加一个属性,具体步骤如下 1.新属性的信息设定:在values目录下添加attrs.xml文件,在里面添加属性信息 <?xml version=" ...

  3. onblur 对象失去焦点事件

    onblur 对象失去焦点事件 一.总结 1.几乎所有的控件都支持onblur事件 二.简介 onblur 事件 Event 对象 定义和用法 onblur 事件会在对象失去焦点时发生. 语法 onb ...

  4. 单位阶跃函数(Heaviside/unit step function)—— 化简分段函数

    注意,单位阶跃函数一种不连续函数. 1. 常见定义 最经典的定义来自于 Ramp function(斜坡函数,max{x,0})的微分形式: H(x)=ddxmax{x,0} 2. 化简分段函数 如对 ...

  5. 2.Xml与多个对象的映射(聚合或组合)及注意事项

    在我们的实际应用中,Xml中的结构往往不止这么简单,一般都会有2,3层.也就是说如果映射成对象就是聚合(组合)的情况 . 就用我们上一章的例子继续来讲,简单我们的Book的author现在不止是一个S ...

  6. 团队作业-Beta冲刺(1)

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblo ...

  7. js-YDUI 移动端解决方案

    /** * YDUI 可伸缩布局方案 * rem计算方式:设计图尺寸px / 100 = 实际rem 例: 100px = 1rem */ !function (window) { /* 设计图文档宽 ...

  8. python学习三:列表,元组

    1.列表: 1.列表的定义方式: list1 = [1,2,3,4,"hello","world"] 如上所示,list1就是一个列表,列表的内容以中括号包含起 ...

  9. 【Unity3D自学记录】鼠标移动三维物体

    创建一个脚本.例如以下: using UnityEngine; using System.Collections; public class OnMouse : MonoBehaviour { IEn ...

  10. rhel5安装 oracle11

    readhat 安装11gr2文档 需要注意的地方:必须关掉的 1,防火墙:2,SElinux . root 用户运行  setup  命令可关防火墙与SElinux 修改网络配置文件,一定要重启此文 ...