zoukankan      html  css  js  c++  java
  • Python之基本数据类型set常用基本方法简述

    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

    set集合,是一个无序且不重复的元素集合

    #set是一个无序且不重复的元素集合
    s1=set()
    s1.add("alex")
    s1.add("eric")
    print(s1)
    #访问速度快
    #天生解决了重复问题
    ll=[1,2,3,4,5,6,3,2,1]
    s2=set(ll)
    print("转换后的集合为:",s2)
    #去除相同项,生成一个新的集合,删除
    s3=s2.difference([1,2,3,11])
    print("s2不变:",s2)
    print("观察是否生成一个新的集合s3:",s3)
    s4=s2.difference_update([3,4,5,11])  #删除所有包含在新集合中的元素,并生成一个新的集合
    print("是否改变原集合s2:",s2)
    print("是否生成新集合s4:",s4)
    
    ret=s2.pop()   #取出元素,并赋值给ret
    print("移除s2中的一个元素",s2)
    print("测试pop是否有返回值,移除的元素是:",ret)
    ret1=s2.remove(2)  #必须带参数且没有返回值
    print("移除s2中的一个元素:",s2)
    print("测试remove是否有返回值:",ret1)
    
    
    #练习
    # 数据库中原有
    
    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 }
    }
    
    # cmdb 新汇报的数据
    new_dict = {
        "#1":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 800 },
        "#3":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 80 },
        "#4":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 80 }
    }
    """
    分析:
    1、新有,原来无→新加入
    2、新有,原来有→更新
    3、新无,原来有→原来删除
    使用set的交集和差集来计算
    old_dict.keys()
    new_dict.keys()
    交集(更新):要更新的数据
    差集(删除):old_dict.keys()--交集
    差集(添加):new_dict.keys()--交集
    """
    old=set(old_dict.keys())
    new=set(new_dict.keys())
    up_set=old.intersection(new)   #需要更新的集合
    del_set=old.symmetric_difference(up_set)   #需要删除的集合
    add_set=new.symmetric_difference(up_set)   #需要添加的集合

    比较元素-->difference()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #set1中有而set2中没有的值
    ret = set1.difference(set2)
    print(ret)

    删除两集合中相同的元素-->difference_update()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #从set1中删除和set2中相同的元素
    set1.difference_update(set2)
    print(set1)
    print(set2)

    移除元素-->discard(values)

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #移除指定元素,不存在不会报错,remove()不存在会报错,建议discard
    set1.discard(44)
    print(set1)

    取交集值-->intersection()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #取两个set集合的交集值
    ret = set1.intersection(set2)
    print(ret)

    取交集并更新-->intersection_update()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #取交集并更新到set1中
    set1.intersection_update(set2)
    print(set1)

    对称交集-->symmetric_difference()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #对称交集,取两个集合中互不存在的元素,生成一个新的集合
    ret = set1.symmetric_difference(set2)
    print(ret)

    对称交集并更新-->symmetric_difference_update()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #对称交集,并更新元素到set1中
    set1.symmetric_difference_update(set2)
    print(set1)

    并集-->union()

    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
    #并集并更新到新的集合中
    ret = set1.union(set2)
    print(ret)
  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/eric8899/p/5943514.html
Copyright © 2011-2022 走看看