首页 > 编程语言 > 详细

Python基本数据类型set方法概述

时间:2018-05-04 15:58:52      阅读:153      评论:0      收藏:0      [点我收藏+]
 li=[1,2,3,4,5,6,3,2,1]
 s2 = set(li)
 print(set(li))
#difference()去除相同项,生成一个新的集合,删除
 s3=s2.difference([1,2,3,11])
 set1 = {1,44,87,23,55}
 set2 = {1,44,88,23,67}
# difference()比较元素 set1中有而set2中没有
 ret = set1.difference(set2)
 print(ret)#{55, 87}
 print(set1)
 print(set2)
#difference_update()删除两集合中相同的元素--
#从set1中删除和set2中相同的元素
 set1.difference_update(set2)
 print(set1)
 print(set2)
#discard(valyes) 移除元素
#移除指定元素,不存在不会报错,remove()不存在会报错,建议discard
 set1.discard(4)
 print(set1)
#intersection()取交集值
set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
 ret = set1.intersection(set2)
 print(set1)
#intersection_difference()取交集并更新
#取交集并更新到set1中
 set1.intersection_update(set2)
 print(set1)
#symmetric_difference()对称交集
#对称交集,取两个集合中互不存在的元素,生成一个新的集合
 ret = set1.symmetric_difference(set2)
 print(ret)#{67, 55, 87, 88}
symmetric_difference_update()对称交集并更新
 set1.symmetric_difference_update(set2)
#对称交集,并更新元素到set1中
 print(set1)
#union()并集
#并集并更新到新的集合中
 ret = set1.union(set2)
 print(ret)


# 数据库中原有

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)   #需要添加的集合
print(up_set)
print(del_set)
print(add_set)

  

Python基本数据类型set方法概述

原文:https://www.cnblogs.com/toby-yu/p/8990943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!