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)