zoukankan      html  css  js  c++  java
  • 7、python数据类型之集合set

    数据类型之集合set
    set 不允许重复的无序集合,不能通过下标取值,因为无序
    1、创建
       创建空集合
       s ={} 默认类型为字典,所以不是空集合,空集合如下
       s = set()
       s = {11,12,12,34,23} #字典是有键值对,集合没有
       s = set()#括号内可以接收可以迭代的元素,str list tuple dict
    2、转换
       s = ([11,123,1234,12345])
       l = "123"
       l = [1,2,3,4]
       l = (1,2,3,4)
       s = set(l)
    3、方法
    #集合中元素无序不重复
    st = {11,22,33,44,55,66}
    #集合中添加元素

    st.add(77)
    print(st)
    a = {11,22,33,55,66}
    b = {55,66,77,11}
    

    #diference方法

    #a.difference(b),a不同于b的元素有哪些,a保持不变

    reta = a.difference(b)
    print(a)
    print(reta)
    

    #b.difference(a),b不同于a的元素有哪些,b保持不变

    print(b)
    retb = b.difference(a)
    print(retb)
    

    #difference_update方法,找出a不同于b的元素并重新覆盖a

    a.difference_update(b)
    print(a)
    

    #找出b不同于a的元素并覆盖b

    b.difference_update(a)
    print(b)
    

     #找出a集合不同于b结合的的元素,b集合不同于a集合的元素,可以赋值给一个新集合

    retab = a.symmetric_difference(b)
    retba =  b.symmetric_difference(a)
    print(retab)
    print(retba)
    

    #找出a集合不同于b结合的的元素,b集合不同于a集合的元素,并将找到的结果更新到a结合

    a.symmetric_difference_update(b)
    print(a)
    

    #找出b集合不同于a结合的的元素,a集合不同于b集合的元素,并将找到的结果更新到b结合

    b.symmetric_difference_update(a)
    print(b)
    

     #discard移除集合中的元素,如果元素存在移除,不存在不报错

    print(a)
    a.discard(11)
    print(a)
    a.discard(456)
    print(a)
    

     #remove移除集合中的元素,如果元素存在移除,不存在报错

    print(a)
    a.remove(22)
    print(a)
    

     #111元素不存在与a中,下面的会报错

    a.remove(111)
    a.remove()
    

     #intersaction取两个集合的交集,并可以赋值给一个新的集合

    retinab = a.intersection(b)
    print(retinab)
    

    #a.intersection_update(b)取两个集合的交集,并将得到的集合更到集合a

    a.intersection_update(b)
    print(a)
    

    #并集union
    #取a集合和b集合的并集

    retuab = a.union(b)
    print(retuab)
    

    #update将b集合更新追加到a集合中

    a.update(b)
    print(a)
    

    #a.isdisjoint(b)

    t = a.isdisjoint(b)
    print(t)
    

    #a.issubset(b)  a是不是b的子序列

    print(a.issubset(b))
    

    #a.issuperset(b) 是不是b的父序列

    print(a.issuperset(b))

    #a.pop()把一个元素移除,可以将这个移除的值赋值给一个变量

    ta = a.pop()
    print(ta)
    

    #练习:寻找差异,并更新old字典
    #将old_dict、new_dict中都存在的更新,old_dict在new_dict中不存在的删除
    #new_dict在old_dict中不存在的,追加到old中去

    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 }
    }
    
    k1 = old_dict.keys()
    k2 = new_dict.keys()
    
    k1_set = set(k1)
    k2_set = set(k2)
    k1_d_k2 = k1_set.difference(k2_set)
    print(k1_d_k2)
    for i1 in k1_d_k2:
        old_dict.pop(i1)
    print(old_dict)
    
    k2_d_k1 = k2_set.difference(k1_set)
    print(k2_d_k1)
    for i2 in k2_d_k1:
        old_dict[i2] = new_dict[i2]
    print(old_dict)
    
    k1_inter_k2 = k1_set.intersection(k2_set)
    print(k1_inter_k2)
    for i3 in k1_inter_k2:
        old_dict[i3] = new_dict[i3]
    print(old_dict)
    
    print(old_dict==new_dict)
    
  • 相关阅读:
    OpenCV下载
    ffmpeg.转换示例_处理流程
    调试.pdb&源码
    OpenCV.图片透明
    ffmpeg.用vs2017编译(20200102)
    ffmpeg.视频转码
    ffmpeg.串流_资料(包含一些vlc)
    Qt563x86vs2015.编译错误(TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension(0x????????) is not a function)
    前端性能优化规则
    前端性能优化 —— reflow(回流)和repaint(重绘)
  • 原文地址:https://www.cnblogs.com/wclwcw/p/8372804.html
Copyright © 2011-2022 走看看