zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    bigtint;int;smallint;tinyint
    修改sqlserver2008默认的数据库文件保存路径
    通过代码来调用log4net写日志
    supersocket中的日志处理
    QuickStart下的CommandFilter项目 github上自己修改过的版本
    演练:实现支持基于事件的异步模式的组件
    BroadcastService的测试用例
    2-Medium下的MultipleCommandAssembly
    如何获取supersocket的源代码
    supersocket中quickstart文件夹下的MultipleCommandAssembly的配置文件分析
  • 原文地址:https://www.cnblogs.com/songqingbo/p/5128066.html
Copyright © 2011-2022 走看看