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)
  • 相关阅读:
    java adsl 自动拔号!
    IoC 原理
    JAVA lucene 高并发问题
    C# java通信之webservice cxf Sping
    jquery插件学习(六)
    jquery插件学习(三)
    jquery实战定宽
    jquery插件学习(五)
    jquery插件学习(四)
    Androidsqlite数据库存取图片信息
  • 原文地址:https://www.cnblogs.com/eric8899/p/5943514.html
Copyright © 2011-2022 走看看