本帖最后由 成成是我 于 2022-12-17 16:35 编辑
2022.12.17
改
想要同时修改多个键值对,可以使用字典的 update() 方法,可以同时给它传入多个键值对,也可以直接给它传入另外一个字典,或者一个包含键值对的可迭代对象
- >>> d.update(F=70, i=105, s=115, h=104, C=67)
- >>> d.update({'F':70, 'i':105, 's':115, 'h':104, 'C':67})
- >>> d.update([('F',70), ('i',105), ('s',115), ('h',104), ('C',67)])
复制代码 默认删除不存在会抛出异常,a.pop("不存在的键"),"弹出的默认值"
查
最简单的查方法就是你给它一个键,它返回你对应的值,如果指定的键不存在于字典中,那么会报错,更好的方法是使用 get() 方法,它可以传入一个 default 参数,指定找不到键时返回的值
查找一个键是否存在于字典中,如果在,返回它对应的值;如果不在,给它指定一个新的值,这么做的一个显而易见的好处就是不会破坏到已经存在的键值对
- >>> d.setdefault('C', "code")
- 67
- >>> d
- {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
- >>> d.setdefault('c', "code")
- 'code'
- >>> d
- {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67, 'c': 'code'}
复制代码
视图对象
items()、keys() 和 values() 三个方法分别用于获取字典的键值对、键和值三者的视图对象
视图对象即字典的动态视图,意味着当字典内容发生改变时,视图对象内容也相应地改变
浅拷贝: copy() 方法,浅拷贝第一层的修改是不会相互影响的,但是对于嵌套层,可就不是这么一回事咯
获取字典的键值对数量和逐个遍历迭代器: len() 函数,next()
判断某个键是否存在于字典中: in 和 not in
字典转化为列表: list() 函数,得到的是字典中所有的 “键” 构成的列表,得到所有的 “值”,应该使用 list(d.values())
将字典的键构成一个迭代器: iter() 函数
对字典内部的键值对进行逆向操作: reversed() 函数
嵌套
- >>> d = {"吕布": {"语文":60, "数学":70, "英语":80}, "关羽": {"语文":80, "数学":90, "英语":70}}
复制代码
字典推导式
- >>> d = {'F':70, 'i':105, 's':115, 'h':104, 'C':67}
- >>> b = {v:k for k,v in d.items()}
- >>> b
- {70: 'F', 105: 'i', 115: 's', 104: 'h', 67: 'C'}
- >>> d
- {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
复制代码 也可以加上筛选的条件
- >>> c = {v:k for k,v in d.items() if v > 100}
- >>> c
- {105: 'i', 115: 's', 104: 'h'}
复制代码 利用字典推导式,我们就可以轻易地让 Python 帮你求出字符串的编码值
- >>> d = {x:ord(x) for x in "FishC"}
- >>> d
- {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
复制代码
创建集合
创建一个集合通常有三种方法:
- 使用花括号,元素之间以逗号分隔:{"FishC", "Python"}
- 使用集合推导式:{s for s in "FishC"}
- 使用类型构造器,也就是 set():set("FishC")
集合最大的特性就是唯一性,集合中所有元素都是独一无二的,并且也是无序的(随机性,无序性)
可以使用 in 和 not in 来判断某个元素是否存在于集合中
访问集合:迭代 - >>> for each in s:
- ... print(each)
- ...
- F
- h
- i
- s
- C
复制代码集合必杀技 —— 去重 - >>> set([1, 1, 2, 3, 5])
- {1, 2, 3, 5}
复制代码
copy() 方法 isdisjoint(other) 方法,检测两个集合之间是否不相干,可以使用 isdisjoint(other) 方法
Python运算符 <=,检测子集 <,检测真子集 >和>=,检测超集和真超集 |(管道符),并集 &(and 符号),交集 -,差集 ^(脱字符),对称差集 注意:使用运算符的话,符号两边都必须是集合类型的数据才可以,不然会报错
|