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

 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)

  

posted @ 2018-05-04 15:42  Mr.toby  阅读(200)  评论(0编辑  收藏  举报