Swift_字典详解
Swift_字典详解
初始化
fileprivate func testInit() {
//空字典
var dic = [String:String]()
print(dic)
dic = [:]
print(dic)
dic = Dictionary()
print(dic)
dic = Dictionary<String,String>()
print(dic)
//非空字典
dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
dic = Dictionary(dictionaryLiteral: ("name","XuBaoAiChiYu"),("QQ","1045214799"))
print(dic)
/* print
[:]
[:]
[:]
[:]
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
*/
}
相关属性
//相关属性
fileprivate func testProperties() {
let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
print("count:\(dic.count)") // 有多个对元素
print("isEmpty:\(dic.isEmpty)") // 是否为空
// 获取所有key
let keys = [String](dic.keys)
print("keys:\(keys)")
// 获取所有value
let values = [String](dic.values)
print("values:\(values)")
print("startIndex:\(dic.startIndex)") // 首脚标
print("endIndex:\(dic.endIndex)") // 尾脚标
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
count:2
isEmpty:false
keys:["name", "QQ"]
values:["XuBaoAiChiYu", "1045214799"]
startIndex:DictionaryIndex<String, String>(_value: Swift.DictionaryIndexRepresentation<Swift.String, Swift.String>._native(Swift._NativeDictionaryIndex<Swift.String, Swift.String>(nativeStorage: , offset: 1)))
endIndex:DictionaryIndex<String, String>(_value: Swift.DictionaryIndexRepresentation<Swift.String, Swift.String>._native(Swift._NativeDictionaryIndex<Swift.String, Swift.String>(nativeStorage: , offset: 4)))
*/
}
查找元素
//查找元素
fileprivate func testFindingObjects() {
let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
if let dicIndex = dic.index(forKey: "name") { // 获取位置
let item = dic[dicIndex] // 根据位置获取键值对
print("key:\(item.0);value:\(item.1)")
}
let value = dic["name"] // 根据key提取Value
print("value:\(value)")
// 遍历输出
for (key, value) in dic {
print("\(key): \(value)")
}
// 所有key输出
for key in dic.keys {
print("key:\(key)")
}
// 所有value输出
for value in dic.values {
print("value: \(value)")
}
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
key:name;value:XuBaoAiChiYu
value:Optional("XuBaoAiChiYu")
name: XuBaoAiChiYu
QQ: 1045214799
key:name
key:QQ
value: XuBaoAiChiYu
value: 1045214799
*/
}
增加元素
//增加元素
fileprivate func testAdd() {
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
// 如果没有则添加,有则修改
dic["language"] = "swift"
print(dic)
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["language": "swift", "name": "XuBaoAiChiYu", "QQ": "1045214799"]
*/
}
删除元素
//删除元素
fileprivate func testRemove() {
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
let oldValue = dic.removeValue(forKey: "name")// 根据key删除,并返回删除的value
print("\(oldValue)")
// 先找到位置,然后根据位置删除
if let dictIndex = dic.index(forKey: "QQ") {
let oldItem = dic.remove(at: dictIndex)// 返回删除的元素对
print("key:\(oldItem.0);value:\(oldItem.1)")
}
dic.removeAll() // 删除所有元素
print(dic)
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
Optional("XuBaoAiChiYu")
key:QQ;value:1045214799
[:]
*/
}
修改元素
//修改元素
fileprivate func testReplace() {
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
// 如果没有则添加,有则修改
dic["name"] = "XUBAO" // 修改
print(dic)
let oldValue = dic.updateValue("XUBAOAICHIYU", forKey: "name") // 修改,并返回原来的value
print("\(oldValue)")
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["name": "XUBAO", "QQ": "1045214799"]
Optional("XUBAO")
*/
}
排序
//排序
fileprivate func testSort() {
let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic)
// 排序主要只排序key或者value,然后借用Array的排序
// 排序key
var array = dic.keys.sorted(by: { str1,str2 in str1 < str2 })
array = dic.keys.sorted(by: <)
print(array)
// 排序value
array = dic.values.sorted(by: {$0 > $1})
print(array)
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["QQ", "name"]
["XuBaoAiChiYu", "1045214799"]
*/
}
文件读写
fileprivate func testReadingAndWriting() {
// Document目录
let documents:[String] = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
let docDirPath = documents.first!
let path = (docDirPath as NSString).appendingPathComponent("test.plist")
let url = URL(fileURLWithPath: path)
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
// 写
(dic as NSDictionary).write(toFile: path, atomically: true)
(dic as NSDictionary).write(to: url, atomically: true)
// 读
dic = NSDictionary(contentsOfFile: path) as! Dictionary
print(dic)
dic = NSDictionary(contentsOf: url) as! Dictionary
print(dic)
/* print
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
*/
}
Swift_字典详解的更多相关文章
- Swift_字符串详解(String)
Swift_字符串详解(String) 类型别名 //类型别名 fileprivate func testTypeAliases() { let index = String.Index.self p ...
- Swift_数组详解
Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...
- python七类之字典详解
一.字典 一.关键字:dict 1.字典是唯一的键值对数据,其表现形式: dic = {键:值},字典里的键必须保证是唯一的 2.键必须是不可变的数据类型: a.故列表是不能当键的 b.所 ...
- Python学习之字典详解
在元组和列表中,都是通过编号进行元素的访问,但有的时候我们按名字进行数据甚至数据结构的访问,在c++中有map的概念,也就是映射,在python中也提供了内置的映射类型--字典.映射其实就是一组key ...
- Python字典详解
转载请注明出处 Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array).元组(touple)和集合(set).字典是一个key/value的集合,key可以是任意可 ...
- python 字典详解
1.字典的定义 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组) 字典包含下标(keys)集合和值 ...
- Python元组与字典详解
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...
- Python之dict字典详解
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...
- Python中的字典详解
https://www.cnblogs.com/yjd_hycf_space/p/6880026.html
随机推荐
- small zhishi
\\192.168.1.201\d$\Data 访问远程计算机文件资源管理器
- css-知识总结
是什么 CSS通常称为CSS样式或层叠样式表,主要用于设置HTML页面中的文本内容(字体,大小,对其方式等),图片的外形 (高宽.边框样式.边距等)以及版面的布局等外观显示样式. CSS可以是HTML ...
- 成长之路--Docker入门
简介 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机. Docker版本 Docker 划分为CE 和EE.CE 即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使 ...
- Servlet中listener(监听器)和filter的总结
Listener 我是这样理解他的,他是一种观察者模式的实现:我们在 web.xml 中配置 listener 的时候就是把一个被观察者放入的观察者的观察对象队列中,当被观察者触发了注册事件时观察者作 ...
- java常用API之基本类型包装类
基本类型包装类概述: 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的. 而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型. 想实现字符串与基本数据之间转换,需 ...
- 自封装ajax
项目中有时候用不到jq,需要了解xmlhttp原理,自己写一套函数请求和发送数据! /* 封装ajax函数 * @param {string}opt.type http连接的方式,包括POST和GET ...
- linux漏洞分析入门笔记-bypass_PIE
ubuntu 16.04 IDA 7.0 docker 0x00:漏洞分析 1.ASLR的是操作系统的功能选项,作用于executable(ELF)装入内存运行时,因而只能随机化stack.heap. ...
- JSTL格式化标签库
导入标签库需要使用taglib指令! <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/forma ...
- 爬虫入门之爬取策略 XPath与bs4实现(五)
爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪 ...
- linux下使用ntfs-3g挂载NTFS出错
挂载报错如下图: 根据图中的报错:The disk contains an unclean file system (0, 0). 在网上搜索了一下原因,由于之前Windows系统未被正常关闭产生了错 ...