数据类型之集合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)

最新文章

  1. 【Pyhon 3】: 170104:优品课堂: GUI -tkinter
  2. python Django session/cookie
  3. 对象的this引用
  4. jQuery学习笔记(三)jQuery中的事件
  5. VC++修改电脑系统时间
  6. C++ 非阻塞套接字的使用 (2)
  7. linux系统下nodejs安装过程随记
  8. C# 读写十六进制bin 文件
  9. 李洪强iOS经典面试题137-内存管理
  10. Cocos2d-x环境搭建
  11. 简单几何(极角排序) POJ 2007 Scrambled Polygon
  12. MySQL内核深度优化
  13. 编程之美 ---> 1.2中国象棋将帅问题
  14. hdu 5570 balls(期望好题)
  15. devstack安装使用openstack常见问题与解决的方法
  16. Linux系统C语言socket tcp套接字编程
  17. 微信小程序模板消息详解
  18. vrn:基于直接体积回归的单幅图像大姿态三维人脸重建
  19. mysql 字符集查看 设定
  20. 转 利用 Console 来学习、调试JavaScript

热门文章

  1. 基于DirectShow和FFmpeg的USB摄像头监控软件-转
  2. GridView有用的小方法--2017年2月13日
  3. Nodejs文件相关操作
  4. bzoj 2733 永无乡 线段树
  5. Python的几种版本的不同实现
  6. 【转】 Pro Android学习笔记(七三):HTTP服务(7):AndroidHttpClient
  7. js一个游戏小笔记
  8. Python图片识别——人工智能篇
  9. 详解MYSQL各种优化原理
  10. 面试题: mysql数据库 已看1 简单的sql练习