- 字典的格式:
Dictionary<KeyType,ValueType>或[KeyType:ValueType]
- 创建字典,不可变字典用let声明,可变字典用var声明.
创建一个空字典:var someDict = [Int: String]()
可变字典实例:var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"] - key一定要是可以hash(String, Int, Double, Bool),value没有要求
let dict = ["name": "lnj", "age": 30] as [String : Any];
或
let dict:[String:Any] = ["name": "lnj", "age": 30]
- 获取value,语法:var someVar = someDict[key]
dict["name"] //输出"lnj"
或
someDict[2] //输出Optional("Two")
- 新增
//如果对应的key在字典中没有,那么就会更新该键值对,否则更新该key的value
var dict2 = ["name": "lnj", "age": 30] as [String : Any] //输出["name": "lnj", "age": 30]
dict2["gender"] = "man" //输出"man"
dict2 //输出["name": "lnj", "age": 30, "gender": "man"]
也可以用updateValue(forKey:)增加或更新字典的内容。返回Optional值
var oldVal = someDict.updateValue("ZhangSan", forKey: "name")
print( "key = 1 旧的值 \(oldVal)" ) #输出"lnj"
print( "key = 1 的值为 \(someDict["name"])" ) #输出"ZhangSan"
- 删除
dict2.removeValue(forKey: "name")
dict2 //输出["gender": "man", "age": 30]
也通过指定键的值为nil来移除键值对
dict2[@"name"] = nil
- 更新
dict2["age"] = 42
- 字典数组
let arrDic:[[String:Any]] = [
["name":"hello","age":22],
["name":"hi","age":23]
]
print(arrDic)
- 合并字典
var dict3 = ["score": 99] //输出["score": 99]
for (key, value) in dict3
{
dict2[key] = value
}
dict2 //输出 ["gender": "man", "age": 42, "score": 99]
- 字典遍历
for e in dictionary
{
print("key = \(e.key) value = \(e.value)")
}
//写法二
for (key,value) in dictionary
{
print("key = \(key) value = \(value)")
}
enumerate()方法遍历字典,返回的是字典的索引index及 元组(key, value)
var dictionary = ["name": "lnj", "age": 30] as [String : Any]
for (index, tuple) in dictionary.enumerated() {
print("下标index:\(index) - 键值对:\(tuple)")
print(" 访问key:\(tuple.key), value:\(tuple.value)")
//也可以写成 print(" 访问key:\(tuple.0), value:\(tuple.1)")
}
以上程序执行输出结果为:
下标index:0 - 键值对:(key: "age", value: 30)
访问key:age, value:30
下标index:1 - 键值对:(key: "name", value: "lnj")
访问key:name, value:lnj
- 字典转换为数组
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)
print("输出字典的键(key)")
for (key) in dictKeys {
print("\(key)")
}
print("输出字典的值(value)")
for (value) in dictValues {
print("\(value)")
}
网友评论