swift学习记录(集合---字典)

来源:互联网 发布:2017淘宝有多少家店铺 编辑:程序博客网 时间:2024/05/24 07:11

字典是一种存储同一种类型多条数据的存储器,以 key(键) - value(值) 的形式存在,每个独立的 key 关联一个 value ,键作为字典中的值的标识符。和数组不同,字典是无序的,通过键访问字典。类似于java中的Map

字典在使用时需要明确存储的键和值类型,方法是通过显示的类型声明或者类型推断。

基本语法

[ key 1 :  value 1 ,  key 2 :  value 2 ,  key 3 :  value 3 ]

其中 Key 是字典中键的数据类型,Value是字典中对应于键的值的数据类型。

声明字典:

var capitals : Dictionary<String, String> = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"] //显示指定数据类型var provincialCapital = ["陕西":"西安","甘肃":"兰州","宁夏":"银川"] //根据数据推断其类型

count 属性

和数组一样通过count属性获取字典中元素的数量

var provincialCapital = ["陕西":"西安","甘肃":"兰州","宁夏":"银川"]var count = provincialCapital.countprint("count is \(count)")//count is 3
isEmpty属性

和数组一样通过 isEmpty属性来判断字典是否为空

var provincialCapital = ["陕西":"西安","甘肃":"兰州","宁夏":"银川"]var empty = provincialCapital.isEmptyprint("empty is \(empty)")//empty is false

基本操作:

1,通过key 来进行增、删、改、查

var capitals : Dictionary<String, String> = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"] //增capitals["英国"] = "伦敦"print("插入一个键值对之后的字典: \(capitals)")//删capitals["韩国"] = nilprint("删除一个键值对之后的字典:\(capitals)")//改capitals["朝鲜"] = "不知道哦"print("修改一个数据之后的字典:\(capitals)")//查var china = capitals["中国"]var usa = capitals["美国"]print("查询的结果 中国:\(china) ,美国: \(usa)")//插入一个键值对之后的字典: ["朝鲜": "平壤", "英国": "伦敦", "中国": "北京", "韩国": "汉城"]//删除一个键值对之后的字典:["朝鲜": "平壤", "英国": "伦敦", "中国": "北京"]//修改一个数据之后的字典:["朝鲜": "不知道哦", "英国": "伦敦", "中国": "北京"]//查询的结果 中国:Optional("北京") ,美国: nil
从上面的代码可以看到,增和改的写法一样。两者的区别在于"key"。如果该key在字典中已经从在,则改变原来所对应的值,如果不存在,则新增一个键值对到字典里。

2,使用 updateValue(forKey:)进行 增和改的操作

var capitals : Dictionary<String, String> = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"]//增var value1 = capitals.updateValue("亚丁", forKey: "也门")print("新增一条数据之后的字典:\(capitals) ,返回的数据 为\(value1)")//改var value2 = capitals.updateValue("不知道哦", forKey:"朝鲜")print("修改一条数据之后的字典:\(capitals) ,返回的数据 为 \(value2)")//新增一条数据之后的字典:["朝鲜": "平壤", "也门": "亚丁", "中国": "北京", "韩国": "汉城"] ,返回的数据 为nil//修改一条数据之后的字典:["朝鲜": "不知道哦", "也门": "亚丁", "中国": "北京", "韩国": "汉城"] ,返回的数据 为 Optional("平壤")

updateValue(forKey:) 方法在 forKey 不存在对应值的时候增加值,存在的时候修改对应已存在的值。

新增的时候返回值为 nil ,修改的时候返回值为该 key 所对应的原来的值,是可选类型。

3,使用 removeValueForKey 方法 删除一个值

var capitals : Dictionary<String, String> = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"]var value = capitals.removeValueForKey("韩国")var value1 = capitals.removeValueForKey("美国")print("移除之后的字典:\(capitals) ,value = \(value),value = \(value1)")//移除之后的字典:["中国": "北京", "朝鲜": "平壤"] ,value = Optional("汉城"),value = nil
removeValueForKey 方法,当传入的key 在 字典中存在时移除key所对应的值,并且返回该移除的值,为可选类型。如果不存在,则返回 nil。

4,字典的遍历

4.1使用 for-in 循环来遍历字典中的键值对

var capitals = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"]for (Country, capital) in capitals {    print("\(Country): \(capital)")}//中国: 北京//韩国: 汉城//朝鲜: 平壤
4.2 通过访问字典的 keys 或者 values 属性(都是可遍历的集合)遍历字典的键或值
var capitals = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"]for country in capitals.keys {    print("\(country)")}//中国//韩国//朝鲜for capital in capitals.values{    print("\(capital)")}//北京//汉城//平壤

4.3将字典的键或者值转为 数组

var capitals = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"]var countrys = Array(capitals.keys)var capital = Array(capitals.values)

0 0
原创粉丝点击