本帖最后由 成成是我 于 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 符号),交集 -,差集 ^(脱字符),对称差集 注意:使用运算符的话,符号两边都必须是集合类型的数据才可以,不然会报错
|