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

字典是一种存储同一种类型多条数据的存储器,以 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.count
print("count is \(count)")
//count is 3
isEmpty属性

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

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

基本操作:

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

var capitals : Dictionary<String, String> = ["中国": "北京", "韩国": "汉城","朝鲜":"平壤"]
 //增
capitals["英国"] = "伦敦"
print("插入一个键值对之后的字典: \(capitals)")
//删
capitals["韩国"] = nil
print("删除一个键值对之后的字典:\(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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值