Dictionary
字典储存无序的相关联的同一类型的键和同一类型的值
字典的key必须是可哈希的
字典的初始化方式
var dict1 = Dictionary<String,Int>()
var dict2 = [String : Int]()
var dict3 : Dictionary<String,Int> = [:]
//字面量创建字典
let dict = ["wang":20,"lisi":30,"zhangsan":32]
//可以用Count的只读属性找出dictionary拥有多少元素
//使用isEmpty判断dictionary是否为空
字典遍历
//forin循环
//可以通过访问字典法的keys和values属性来取可遍历的字典的键和值的集合
//swift的字典是无序的。要以特定的顺序遍历字典的键或者值,可以使用键或者值的Sorted()方法
let dic = ["zhangsan":30,"lisi":20,"wangwu":23,"anday":30]
for (key,value) in dic {
print("\(key)=\(value)")
}
//也可以使用enumerate()方法来进行字典遍历,返回的是字典的索引及 (key, value) 对
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
print("字典 key \(key) - 字典 (key, value) 对 \(value)")
}
字典修改
//可以使用 updateValue(forKey:) 增加或更新字典的内容。如果 key 不存在,则添加值,如果存在则修改 key 对应的值。updateValue(_:forKey:)方法返回Optional值
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("One 新的值", forKey: 1)
//也可以通过指定的 key 来修改字典的值
someDict[1] = "One 新的值"
合并两个字典
//合并两个字典
var dictionary = ["a":1,"b":2]
var dictionary2 = ["a":3,"c":3]
//如果重复key,以前者为主合并
dictionary.merge(dictionary2) { (a, b) -> Int in
a
}
print(dictionary)
//如果重复key,以后者为主合并
dictionary.merge(dictionary2) { (_, new) -> Int in
new
}
print(dictionary)
字典移除Key-Value
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
//可以使用 removeValueForKey() 方法来移除字典 key-value 对。如果 key 存在该方法返回移除的值,如果不存在返回 nil
var removedValue = someDict.removeValue(forKey: 2)
//也可以通过指定键的值为 nil 来移除 key-value(键-值)对
someDict[2] = nil
字典转换为数组
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)
网友评论