python 字典与集合
字典
概念
字典中的键是唯一的,不可以重复。
值不是唯一的可以重复
键必须是可哈希对象:
整数、布尔值、字符串、元组
列表不是可哈希对象
创建空字典:
a={} 或 dict()
有序性:
python 3.6之后字典变为有序字典,按照插入顺须排列
内置函数:
hash()
判断一个对象是否可哈希
返回哈希码或抛出异常
get()方法
查找字典中是否存在某个键值,返回None或相应的键值。
注意
sum函数用于字典时 返回字典键值的和而不是值的和。
集合
若不关心元素顺序,使用集合来存储数据比使用列表效率更高。
创建空集合
set() 或 set({})
注意 :{}是创建一个空字典而不是集合。
内置函数:
len()
返回集合的长度
max()
返回集合中最大的值
min()
返回集合中最小的值
运算符:
in 或not in
判断与元素是否在集合中
is 或 is not
判断两个集合是否为同一个对象
== 或 !=
判断两个集合是否包含相同的元素
<
判断一个集合是否为另一个集合的真子集
<=
判断一个集合是否为另一个集合的子集
|
两个集合的并集
&
两个集合的交集
-
差集: 指出现在第一个集合但不出现在第二个集合的元素
^
对称差集 :包含这两个集合共有元素之外所有元素的新集合。
方法:
issubset()/isuperset()
判断子集/超集
union()
实现集合合并
intersection()
实现集合交集
difference()
实现集合差集操作
symmetric_difference()
实现集合对称差集操作
遍历集合
使用for语句:
for value in set:
注意 :集合不是序列类型,不能通过下标或切片操作来访问集合中的元素。
集合解析
set1={expr for iter_var in iterable}
example:
set1={value for value in range(0,11,2)}
set1={0,2,4,6,8,10}
首先循环iterable中的内容,每一次循环都吧iterable中的相应内容放到iter_var中,再在expr中应用该内容,最后用expr的值生成一个集合。
set1={expr for iter_var in iterable if cond_expr}
example:
set2={0.5*value for value in set1 if value >2 }
set2={2,3,4,5}
加入了判断语句
向可变集合添加元素
add(x)方法
将元素x添加到可变集合中
update()方法
用两个集合的并集更新第一个集合
intersection_update()方法
用两个集合的交集更新第一个集合
difference_update()方法
用两个集合的差集更新第一个集合
symmetric_difference_update()方法
用两个集合的对称差集更新第一个集合
从可变集合删除元素
pop()方法
从可变集合中删除并返回一个元素。若可变集合为空集合,则抛出KeyError异常。
remove(x)方法
从可变集合中删除元素x,若可变集合中元素x不存在,则抛出KeyError异常。
discard() 方法
从可变集合中删除元素x,若可变集合中元素x不存在,则不做任何事情。
clear() 方法
删除集合中的所有元素
del语句
删除整个集合
set1={1,2,3}
del set1
print(set1)
NameError: name 'set1' is not defined