注:Iterable[int] 为任一元素为 int 类型的可迭代对象,如列表 [1, 2, 3]
注:set() 为一个集合实例,可用任一列表替换(如 {‘asd’}),frozenset()、dict() 同理
注:set | frozenset | dict 表示参数可为 set、frozenset、dict 任一类型,set() | frozenset() | dict() 同理
1. 新建字典
{key: value for key, value in Iterable}:字典推导式,根据 Iterable 中元素生成列表
{key: value for value, key in Iterable}
{key: value for key, value in Iterable if …}:选择 Iterable 中符合条件的元素
dict().fromkeys(Iterable):使用 iterable 的键创建字典,键值设为 None
dict().fromkeys(Iterable, Any):设置键值为 Any
2. 集合基本运算(basic_operate)
交集运算
set() | frozenset()
set() & set()
set().intersection(Iterable, …)
set().intersection_update(Iterable, …):同时更新 set
并集运算
set() | frozenset()
set() | set()
set().union(Iterable, …)
set().update(Iterable, …):同时更新 set
差集运算
set() | frozenset()
set() - set()
set().difference(Iterable, …)
set().difference_update(Iterable, …):同时更新 set
异或运算(对称差)
set() | frozenset()
set() ^ set()
set().symmetric_difference(Iterable, …)
set().symmetric_difference_update(Iterable, …):同时更新 set
3. 元素个数(length)
len(set | frozenset | dict)
4. 浅拷贝(copy)
set() | dict().copy()
5. 字典排序(sort)
reversed(dict)
sorted(dict):对 dict 键进行排序
sorted(dict ,reverse=[True]):反向排序
sorted(dict().items(),key=[lambda d: d[1]]):对 dict 键值对进行排序(根据 dict 值进行排序)
sorted(dict().items(),key=[lambda d: (d[1], d[0])]):对 dict 键值对进行排序(首先根据 dict 值进行排序,值相同时根据键进行排序)
6. 查找某个元素(select_elem)
… in …
… not in …
key in dict() | dict().values():判断 键 是否为字典中的键
(key, value) in dict().items():判断 键值对 是否为字典元素
dict().get(Any):返回 dict 键 Any 对应的值;若不存在键 Any,则返回 None
dict().get(Any, Any):若不存在键 Any_1,则返回 Any_2
dict().setdefault(Any):返回 dict 键 Any 对应的值;若不存在键 Any,则插入值为 None 的键 Any
dict().setdefault(Any, Any):若不存在键 Any_1,则插入值为 Any_2 的键 Any_1
7. 集合添加元素(add_elem)
set().add(Any):将元素 Any 添加到 set 中
8. 删除某个元素(delete_elem)
set().pop():返回 set 中第一个元素,并将其从 set 中移除
set().remove(Any):移除 set 中元素 Any,若不存在元素 Any,引发 KeyError
set().discard(Any):移除 set 中的元素 Any
dict().pop(Any[‘key’]):返回 dict 中键为 key 的元素值,并将其从 dict 中移除(未找到 key,引发 KeyError)
dict().pop(Any[‘key’], [Any[‘default’]]):移除 dict 中键为 key 的元素(未找到 key,返回 default)
dict().popitem():移除最新加入 dict 的键值对
del dict()[Any]:若不存在键 Any,引发 KeyError
9. 集合比较
set() | frozenset().isdisjoint(Iterable):set 中没有与 Iterable 共有的元素,则返回 True
set() | frozenset() <= set() | frozenset():set_1 是 set_2 的子集,则返回 True
set() | frozenset().issubset(Iterable):set 中每个元素都在 Iterable 中,则返回 True
set() | frozenset() < set() | frozenset():set_1 是 set_2 的真子集,则返回 True
set() | frozenset() >= set() | frozenset():set_2 是 set_1 的子集,则返回 True
set() | frozenset().issuperset(Iterable):Iterable 中每个元素都在 set 中,则返回 True
set() | frozenset() > set() | frozenset():set_2 是 set_1 的子集,则返回 True
10. 获取字典视图(get_view)
list(dict):返回以 dict 的键为元素的列表
iter(dict):返回以 dict 的键为元素的迭代器
dict().keys():返回由 dict 值组成的新视图
dict().values():返回由 dict 键组成的新视图
dict().items():返回由 dict 项 (键,值) 组成的新视图
11. 字典拼接(concatenate)
dict() | dict():使用 dict_2 的键值对更新 dict_1,覆盖原有的键
{**dict(), **dict()}
dict().update(dict | Iterable(Any, Any)):使用 dict_2 的键值对或 Iterable 中的值更新 dict_1,覆盖原有的键
12. 字典拆包(unpack)
{**dict(), **dict()}:返回一个字典,元素为 dict_1 与 dict_2 中元素值,dict_2 会覆盖 dict_1 的键
{**dict(), Any: Any}:返回一个字典,元素为 dict_1 中元素值与 (Any,Any) 键值对,(Any,Any) 键值对 覆盖 dict_1 的键