7、python数据类型之集合set
数据类型之集合set
set 不允许重复的无序集合,不能通过下标取值,因为无序
1、创建
创建空集合
s ={} 默认类型为字典,所以不是空集合,空集合如下
s = set()
s = {11,12,12,34,23} #字典是有键值对,集合没有
s = set()#括号内可以接收可以迭代的元素,str list tuple dict
2、转换
s = ([11,123,1234,12345])
l = "123"
l = [1,2,3,4]
l = (1,2,3,4)
s = set(l)
3、方法
#集合中元素无序不重复
st = {11,22,33,44,55,66}
#集合中添加元素
st.add(77) print(st)
a = {11,22,33,55,66} b = {55,66,77,11}
#diference方法
#a.difference(b),a不同于b的元素有哪些,a保持不变
reta = a.difference(b) print(a) print(reta)
#b.difference(a),b不同于a的元素有哪些,b保持不变
print(b) retb = b.difference(a) print(retb)
#difference_update方法,找出a不同于b的元素并重新覆盖a
a.difference_update(b) print(a)
#找出b不同于a的元素并覆盖b
b.difference_update(a) print(b)
#找出a集合不同于b结合的的元素,b集合不同于a集合的元素,可以赋值给一个新集合
retab = a.symmetric_difference(b) retba = b.symmetric_difference(a) print(retab) print(retba)
#找出a集合不同于b结合的的元素,b集合不同于a集合的元素,并将找到的结果更新到a结合
a.symmetric_difference_update(b) print(a)
#找出b集合不同于a结合的的元素,a集合不同于b集合的元素,并将找到的结果更新到b结合
b.symmetric_difference_update(a) print(b)
#discard移除集合中的元素,如果元素存在移除,不存在不报错
print(a) a.discard(11) print(a) a.discard(456) print(a)
#remove移除集合中的元素,如果元素存在移除,不存在报错
print(a) a.remove(22) print(a)
#111元素不存在与a中,下面的会报错
a.remove(111) a.remove()
#intersaction取两个集合的交集,并可以赋值给一个新的集合
retinab = a.intersection(b) print(retinab)
#a.intersection_update(b)取两个集合的交集,并将得到的集合更到集合a
a.intersection_update(b) print(a)
#并集union
#取a集合和b集合的并集
retuab = a.union(b) print(retuab)
#update将b集合更新追加到a集合中
a.update(b) print(a)
#a.isdisjoint(b)
t = a.isdisjoint(b) print(t)
#a.issubset(b) a是不是b的子序列
print(a.issubset(b))
#a.issuperset(b) 是不是b的父序列
print(a.issuperset(b))
#a.pop()把一个元素移除,可以将这个移除的值赋值给一个变量
ta = a.pop() print(ta)
#练习:寻找差异,并更新old字典
#将old_dict、new_dict中都存在的更新,old_dict在new_dict中不存在的删除
#new_dict在old_dict中不存在的,追加到old中去
old_dict = { "#1":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }, "#2":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }, "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 } } new_dict = { "#1":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 800 }, "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }, "#4":{ 'hostname':'c2', 'cpu_count': 2, 'mem_capicity': 80 } } k1 = old_dict.keys() k2 = new_dict.keys() k1_set = set(k1) k2_set = set(k2) k1_d_k2 = k1_set.difference(k2_set) print(k1_d_k2) for i1 in k1_d_k2: old_dict.pop(i1) print(old_dict) k2_d_k1 = k2_set.difference(k1_set) print(k2_d_k1) for i2 in k2_d_k1: old_dict[i2] = new_dict[i2] print(old_dict) k1_inter_k2 = k1_set.intersection(k2_set) print(k1_inter_k2) for i3 in k1_inter_k2: old_dict[i3] = new_dict[i3] print(old_dict) print(old_dict==new_dict)