链条传动

砥砺前行,不忘初心!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
set:集合,无序不重复的序列

#创建set集合
se = {'hello','haha',123,123}
print(type(se))
print(se)   #set集合不能包含重复元素,如果创建过程中添加了重复的元素,set集合会自动去重

li = [111,2222,111,2222] se2 = set(li) #将li列表中重复项去除,生成一个新的集合 print(se2)
#功能 se.add('new1') #向集合中添加元素 print(se) se.clear() #清除集合所有内容 print(se) s1 = {111,222,333} s2 = {222,333,444} print(s1.difference(s2)) #s1中存在,s2中不存在的元素-----s1与s2的差集(s1-s2) print(s2.difference(s1)) #s2中存在,s1中不存在的元素-----s2与s1的差集(s2-s1) print(s1.symmetric_difference(s2)) #对称差集:s1-s2和s2-s1合并 print(s2.symmetric_difference(s1)) #上面操作都是产生一个新的集合 s1.difference_update(s2) #s1与s2的差集,并将该差集更新到s1中---------对称差集也有类似操作 print(s1) s_ret = s1.intersection(s2) #取两个集合的交集 print(s_ret) s1.intersection_update(s2) #取两个集合的交集,并更新到s1中 print(s1) print(s1.union(s2)) #取s1和s2的并集 print(s1.isdisjoint(s2)) #判断s1和s2有没有交集,没有返回True s5 = {111,222,333} s6 = {222,333} print(s5.issuperset(s6)) #判断s5是不是s6的父序列,是则返回True print(s6.issubset(s5)) #判断s6是不是s5的子序列,是则返回True s3 = {111,222,333,444,555,666,777} s3.discard(111) #移除集合中指定的元素----如果元素不存在,也不报错 print(s3) s3.remove(222) #移除集合中指定的元素----如果元素不存在,会报错 print(s3) ret = s3.pop() #随机移除集合中的一个元素,并会将移除的元素返回 print(s3) print(ret) lis = ['a','b','c'] se3 = {1,2,3} se3.update(lis) #将lis中的元素更新到se3中------update可接受的参数为可迭代的对象,如列表、字符串等 print(se3) #应用:数据库中存放的是old,当old发生改变,变成new后,如何在数据库中从old更新到new old_dict = { '#1':8, '#2':4, '#4':2 } new_dict = { '#1':4, '#2':4, '#3':2 } old = set(old_dict.keys()) new = set(new_dict.keys()) #old中有的而new中没有的,删除 dele = old.difference(new) #要删除的key for i in dele: del old_dict[i] #删除 #new中有的而old中没有的,添加 add = new.difference(old) #要添加的key for i in add: old_dict[i] = new_dict[i] #添加 #old和new中都有的,可能会更新其value update = old.intersection(new) #都存在的key,可能需要更新value for i in update: if old_dict[i] != new_dict[i]: #要更新的key old_dict[i] = new_dict[i] #更新 print(old_dict)

 

posted on 2016-10-08 10:10  链条君  阅读(240)  评论(0编辑  收藏  举报