python set集合操作


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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM