set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

set集合,是一个无序且不重复的元素集合

#set是一个无序且不重复的元素集合
s1=set()
s1.add("alex")
s1.add("eric")
print(s1)
#访问速度快
#天生解决了重复问题
ll=[1,2,3,4,5,6,3,2,1]
s2=set(ll)
print("转换后的集合为:",s2)
#去除相同项,生成一个新的集合,删除
s3=s2.difference([1,2,3,11])
print("s2不变:",s2)
print("观察是否生成一个新的集合s3:",s3)
s4=s2.difference_update([3,4,5,11])  #删除所有包含在新集合中的元素,并生成一个新的集合
print("是否改变原集合s2:",s2)
print("是否生成新集合s4:",s4)ret=s2.pop()   #取出元素,并赋值给ret
print("移除s2中的一个元素",s2)
print("测试pop是否有返回值,移除的元素是:",ret)
ret1=s2.remove(2)  #必须带参数且没有返回值
print("移除s2中的一个元素:",s2)
print("测试remove是否有返回值:",ret1)#练习
# 数据库中原有

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 }
}# cmdb 新汇报的数据
new_dict = {"#1":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 800 },"#3":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 80 },"#4":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 80 }
}
"""
分析:
1、新有,原来无→新加入
2、新有,原来有→更新
3、新无,原来有→原来删除
使用set的交集和差集来计算
old_dict.keys()
new_dict.keys()
交集(更新):要更新的数据
差集(删除):old_dict.keys()--交集
差集(添加):new_dict.keys()--交集
"""
old=set(old_dict.keys())
new=set(new_dict.keys())
up_set=old.intersection(new)   #需要更新的集合
del_set=old.symmetric_difference(up_set)   #需要删除的集合
add_set=new.symmetric_difference(up_set)   #需要添加的集合

比较元素-->difference()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#set1中有而set2中没有的值
ret = set1.difference(set2)
print(ret)

删除两集合中相同的元素-->difference_update()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#从set1中删除和set2中相同的元素
set1.difference_update(set2)
print(set1)
print(set2)

移除元素-->discard(values)

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#移除指定元素,不存在不会报错,remove()不存在会报错,建议discard
set1.discard(44)
print(set1)

取交集值-->intersection()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#取两个set集合的交集值
ret = set1.intersection(set2)
print(ret)

取交集并更新-->intersection_update()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#取交集并更新到set1中
set1.intersection_update(set2)
print(set1)

对称交集-->symmetric_difference()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#对称交集,取两个集合中互不存在的元素,生成一个新的集合
ret = set1.symmetric_difference(set2)
print(ret)

对称交集并更新-->symmetric_difference_update()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#对称交集,并更新元素到set1中
set1.symmetric_difference_update(set2)
print(set1)

并集-->union()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#并集并更新到新的集合中
ret = set1.union(set2)
print(ret)

转载于:https://www.cnblogs.com/eric8899/p/5943514.html

Python之基本数据类型set常用基本方法简述相关推荐

  1. Python中字典取值常用的方法!

    字典是Python中比较常见的数据类型之一,它是一种可变容器模型,可以存储任意数量的任意类型的数据,而且字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔.本文为大家介绍一下Python中字典 ...

  2. [python]开发IC utility 一些常用的方法和函数和语法规则

    文章目录 字符串的replace 字符串的split 字符串的strip 循环for in 判断语句中的and not re.search与re.match 合并元素为一个字符串 判断提供的path是 ...

  3. python入门之数据类型及常用操作

    1.数字 int(整型) 在32位机上,整数的位数为32位,取值范围为-231~231-1 在64位机上,整数的位数为64位,取值范围为-263~263-1 long(长整型) python中没有指定 ...

  4. python中的数据类型和常用运算符

    一. python中常见的数据类型 整数:任何时候运算都是精确的 浮点数:运算的时候,可能会有四舍五入 字符串:字符串是以单引号'或双引号"括起来的任意文本 同类型的可以用+号 或者 , 号 ...

  5. python soup attrs_python Beautiful Soup常用过滤方法

    1.Beautiful Soup from bs4 import BeautifulSoup soup = BeautifulSoup(' Hello ','lxml')//倒入需要解析的文件字符串 ...

  6. Python数据分析几个比较常用的方法

    1,表头或是excel的索引如果是中文的话,输出会出错 ​​解决方法:python的版本问题!换成python3就自动解决了!当然也有其他的方法,这里就不再深究 2,如果有很多列,如何输出指定的列? ...

  7. python中字符串(str)的常用处理方法

    str='python String function' 生成字符串变量str='python String function' 字符串长度获取:len(str) 例:print '%s length ...

  8. python的基本功能_二.Python的基本数据类型及常用功能

    classstr(basestring):"""str(object='') -> string Return a nice string representati ...

  9. Python(27)_字符串的常用的方法2

    #-*-coding:utf-8-*- ''' 字符串操作 ''' s = " bowen " # 从右边删 s1 = s.rstrip() print(len(s1)) s2 = ...

最新文章

  1. js实现图片无缝连接
  2. Http://selboo.com.cn
  3. opengl编程从入门到精通-hello,window
  4. 建立和操作 JDOM 文档
  5. linux java -xms_java.lang.OutOfMemoryError及解决方法
  6. C++ std::move()和完美转发
  7. Nacos 配置实时更新原理分析
  8. 制作软盘镜像文件的几种方法
  9. java ojdbc14.jar_ojdbc14_g.jar
  10. 解决linux下 firefox 浏览器 视频无法播放问题
  11. ipad微信号无法连接服务器,ipad微信内置浏览器无法微信登录
  12. 大数数字读法 unsigned long long
  13. C语言循环结构输出爱心,C语言--循环结构(示例代码)
  14. Qt中的网络编程(TCP)
  15. 管道仪表流程图中常用的字母及其含义
  16. 异形3×3魔方还原教程_2345异形魔方教程
  17. 【读书心得】《格局》吴军
  18. git工具上传仓库代码步骤
  19. gcIPtoHostQueue.exe
  20. BUUCTF:[SUCTF 2019]Game

热门文章

  1. pytorch torch.nn.TransformerEncoder
  2. javascript Arrow functions(箭头函数)
  3. Web MIDI API W3C
  4. ChannelSplitterNode
  5. neo4j union
  6. numpy 线性代数
  7. freecplus框架-tcp网络通信
  8. Excel的html转换成unicode,EXCEL表格中把汉字转换成unicode编码
  9. TreeView控件问题汇总
  10. Android基础View回顾