set集合是一个无序且不重复的集合。
创建一个set集合:
name = set("sdd")
name
返回结果:{"d", "s"}
add
功能:增加集合元素
name = {"d", "s"}
name.add("d")
name
返回结果:{"d", "s"}
name.add("sd")
name
返回结果:{"sd", "d", "s"}
clear
功能:清空集合元素
name = {"d", "s"}
name.clear()
name
返回结果:{}
copy
功能:浅拷贝
name = {"sd", "d", "s"}
li = name.copy()
返回结果:li
{"sd", "d", "s"}
difference
name.difference(li)
set()
>>> name.difference()
{"sd", "d", "s"}
difference_update
功能:删除当前set中的所有包含在 new set 里的元素
li = ("s", "d")
name = {"sd", "d", "s"}
name.difference_update(li)
name
返回结果:{"sd"}
discard
功能:移除元素
name = {"sd", "d", "s"}
name.discard("s")
返回结果:name
{"sd", "d"}
intersection
功能:取交集,建立新的set集合
li = ("s", "d")
name = {"sd", "d", "s"}
name.intersection(li)
返回结果:{"d", "s"}
intersection_update
功能:取交集,更新原来的set集合
li = ("s", "d")
name = {"sd", "d", "s"}
name.intersection_update(li)
返回结果:{"d", "s"}
isdisjoint
功能:判断没有交集,返回True,否则,返回False
li = {"s", "d"}
name = {"sd", "d", "s"}
name.isdisjoint(li)
issubset
功能:判断是否是子集
li = {"s", "d"}
name = {"sd", "d", "s"}
name.issubset(li) #判断name是不是li的子集
返回结果:False
li.issubset(name) #判断li是不是name的子集
返回结果:True
issuperset
功能:判断是否是父集
li = {"s", "d"}
name = {"sd", "d", "s"}
name.issuperset(li) #判断name是不是li的父集
返回结果:True
li.issuperset(name) #判断li是不是name的父集
返回结果:False
pop
功能:移除集合元素
name = {"sd", "d", "s"}
name.pop()
返回结果:"sd" #同一个集合,删除集合元素的顺序固定
se1 = {"a","s","sb"}
se1.pop()
返回结果:"sb"
remove
功能:移除指定集合元素
name = {"sd","d","s"}
name.remove("s")
返回结果:name
{"sd", "d"}
symmetric_difference
功能:去两个集合的差集,建立新的set集合对象
name = {"sd", "d", "s"}
li = {"s", "d"}
name.symmetric_difference(li)
返回结果:{"sd"}
symmetric_difference_update
功能:去两个集合的差集,更新原来的集合对象
name = {"sd", "d", "s"}
li = {"s", "d"}
name.symmetric_difference_update(li)
返回结果:{"sd"}
union
功能:并集,创建新的对象
name = {"sd", "d", "s"}
li = {"s", "d","h"}
name.union(li)
返回结果:{"h", "s", "d", "sd"}
update
功能:更新已有集合
name = {"sd", "d", "s"}
name.update("df")
name
返回结果:{"sd", "d", "f", "s"}
set集合 ### 2016.1.17更新
优点:访问速度快;
自带一套解决元素重复的解决方案
测试程序
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 },
}
获取三个列表:
1. 需要更新的列表 update_list
2. 需要删除的列表 del_list
3. 需要增加的列表 add_list
代码实现:
#!/usr/local/env python3
"""
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
"""
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 },
}
#设置set
old_set = set(old_dict.keys())
new_set = set(new_dict.keys())
#更新的set
update_set = new_set.intersection(old_dict)
delate_set = old_set.difference(update_set)
add_set = new_set.difference(update_set)
update_list = []
del_list = []
add_list = []
# print(update_set)
# print(delate_set)
# print(add_set)
for i in update_set:
update_list.append({i:new_dict[i]})
print("需要更新的列表:%s" % update_list)
for i in delate_set:
del_list.append({i:old_dict[i]})
print("需要删除的列表:%s" % del_list)
for i in add_set:
add_list.append({i:new_dict[i]})
print("需要增加的列表:%s" % add_list)