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:[email protected]
    '''
    
    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)

你可能感兴趣的:(python set集合操作)