详细解决方案
Day-10:字典
热度:78 发布时间:2023-09-29 19:06:51.0
- 字典存储无序的互相关联的同一个类型的键和同一个类型的值的集合。
- 字典类型的全写方式dictionary<key,value>,简写方式[key:value],建议使用简写方式。
- 字典的key必须是可哈希的。
- 初始器方式。
- 简写方式。
- 字面量方式。
- 可以使用count只读属性找到dictionary拥有多少个元素。
- 使用布尔量属性检查字典是否为空。
- 可以通过访问字典的keys和values属性来取回可遍历的字典的键和值的集合。
- swift的dictionary类型是无序的。要以特定的顺序遍历字典的键和值,使用键和值的sorted()。
- 【代码演示】???????
//1、创建字典var dicta = Dictionary<String,Int>()
var dictb = [String:Int]()
var cictc:Dictionary<String,Int> = ["key":1]
var dictd = ["zhangsan":20,"lisi":19,"wangwu":20]//2、count 和 isEmpty
print(dictd.count)//结果:3if dicta.isEmpty {print("dicta is empty")//结果:dicta is empty
}//3、字典遍历
var dictm = ["zhangsan":20,"lisi":29,"wangwu":22]for item in dictm {print(item)//结果:
}
/** 结果(key: "wangwu", value: 22)(key: "zhangsan", value: 20)(key: "lisi", value: 29)*/
for (key,vale) in dictm {print("key :\(key),value:\(vale)")
}/**结果key :wangwu,value:22key :zhangsan,value:20key :lisi,value:29*/for item in dictm.keys{
print(item)//结果:lisi wangwu zhangsan
}for item in dictm.values{
print(item)//结果:29 22 20
}for item in dictm.values.sorted(){
print(item)//结果:20 22 29
}
- 添加或更新元素
- 使用下标添加或更新元素。
- 使用updateValue(_:forKey:)方法添加或更新元素,返回一个字典值类型的可选值
- 使用下标脚本语法给一个键赋值nil来从字典当中移除一个键值对。
- 使用removeValue(foeKey:)来从字典里移除键值对。这个方法移除键值对如果他们存在的话,并且返回移除的值,如果值不存在则返回nil。
- Merge(_:uniquingKeysWhith:)
- 虽然字典是无序的,但是每个kv对在扩充之前的位置是稳定的。如果你需要保持顺序的kv对可以使用keyValuePairs。
- 【代码演示】
//4、添加和更新元素
var personDict = ["zhangsan":18,"list":19,"wangwu":20]
personDict["zhouliu"] = 34print(personDict)//结果:["wangwu": 20, "list": 19, "zhouliu": 34, "zhangsan": 18]
personDict["zhouliu"] = 10
print(personDict)//结果:["zhangsan": 18, "list": 19, "wangwu": 20, "zhouliu": 10]
personDict["zhouliu"] = nil
print(personDict)//结果:["zhangsan": 18, "wangwu": 20, "list": 19]//5、Merge(_:uniquingKeysWhith:)
var dict = ["a":1,"b":2]
print(dict.merging(["a":2,"c":5], uniquingKeysWith: { (current, in) -> Int in current
}))
//结果:["c": 5, "a": 1, "b": 2]
print(dict)//结果:["a": 1, "b": 2]
print(dict.merging(["a":2,"d":11], uniquingKeysWith: { (_, new) -> Int in new
}))//结果:["b": 2, "a": 2, "d": 11]
print(dict)//结果:["b": 2, "a": 1]
//6、firstIndex
var dictIndex = ["a":1,"b":2]
let index = dictIndex.firstIndex { (_, value) -> Bool invalue == 1
}
print(index)if let i = index {print(dictIndex[i].value)//结果:1
}
//7、KeyValuePairs
let kvs:KeyValuePairs = ["a":1,"b":2,"c":3]
print(kvs)//结果:["a": 1, "b": 2, "c": 3]