这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战
4. 字典 -- dict 【键+值】【无序可修改】
- 可变类型与不可变类型
判断方法
1. id(x), 对x进行操作 看id是否变 -- 变【不可变类型】
2. hash(x), hash不报错 -- 【不可变类型】
可变类型
列表、集合、字典
不可变类型
字符、元组、数值 - 字典的定义
查找插入速度极快,极占内存 - 创建和访问字典
dict1 = {键: 值}
元组创建 --dict2 = {(1, 2, 3): 1, 4: [5, 6, 7]}
dict创建1 -- dict3 = dict([(1, 2), (3, 4), (5, 6)]) / dict4 = dict(((1, 2), (3, 4), (5, 6))) -- 【输出都是{1:2, 3: 4, 5: 6}】
dict 创建2 -- dict5 = dict(name='Tom', age = 10) --【输出是{name: Tom, age: 10}】【键必须是字符串且不加引号】 - 字典的内置方法
fromkeys -- 创建新字典
dict7 = dict.fromkeys(('蛋壳', '粉粉','太极'), (1, 2, 3)) -- {'蛋壳': ('1', '2', '3'), '粉粉': ('1', '2', '3'), '太极':('1', '2', '3')}
取字典中的所有键 -- dict.keys() -- 转换成列表 list(dict.keys())
取字典中的所有值 -- dict.value() -- 转换成列表 list(dict.values())
取字典中的键值 列表元组数组形式 - dict.items() -- 转换成列表 list(dict.items())
返回指定键的值 -- dic1.get('键', '找不到的默认值') -- 同 dic1.setdefault('键', '找不到的默认值')
key in/not in 字典 -- 判断键是否在字典内
pop(键, 找不到的默认值) -- 删除该键对应的值
popitem() -- 随即删除一对
clear() -- 清空
浅拷贝(copy())VS 深拷贝 (赋值)
修改值浅拷贝不变,有嵌套,嵌套值变浅拷贝会变
dic1.update(dic2) -- dic2中的键值放到dic1中
5. 集合 -- set【键】【无序不可修改】
- 集合的创建
- set() + add (键)
- = {键1, 键2}
- set(其他类型) -- 用于去除重复值
- 访问集合中的值 长度 -- len() 在不在里面 -- in / not in
- 集合的内置方法
- add -- 添加元素
- update -- 复制到自己里面【删除重复元素】
- remove/ discard -- 删除某元素 【不在集合中discard不报错】
- pop -- 随机移除一个【我看到是第一个】
- 集合操作
5. 交集 --
intersection(s1, s2)
s1 & s2
instersection_update(s1, s2)【使得原始集合上移除不重叠元素 改变原值】
6. 并集 --
union(s1, s2)
s1 | s2
7. 差集 --
difference()
s1 - s2
difference_update(s1, s2) -- 参照交集
8. 异或 -- s1中移除与s2中相同的元素,将s2中的不同元素插入
s1.symmetric_difference(s2)
s1 ^ s2
s1.symmetric_difference_update(s2)
9. 是否被其他集合包含
s1.issubset(s2)
s1 <= s2
10. 是不是包含其他集合
s1.issuperset(s2)
s1 >= s2
10. 是不是不相交 - 不相交 True / 相交 False
s1.isdisjoint(s2) - 集合的转换
set() --将其他类型转换成集合 - 不可变集合
frozenset() -- 冻结集合,不能做添加/删除操作【可进行集合操作,除带有update的方法】
6. 序列
针对序列的内置函数
1. list() -- 转换成列表
2. tuple() -- 转换成元组
3. str() -- 转换成字符串
4. len() -- 返回对象的长度
5. max() -- 最大值
6. min() -- 最小值
7. sum(序列, 可选参数) -- 序列,可选参数总和
8. sorted(这个对象, key = 比较的元素, reverse = True 降序 / False 升序)
9. reversed(序列) -- 反转
10. enumerate(序列,起始序列值) -- 同时有数据和数据下标
11. zip() -- 对应打包成元组
12. zip(* 元组 ) -- 元组解压成列表