zoukankan      html  css  js  c++  java
  • Python基本数据类型set方法概述

     li=[1,2,3,4,5,6,3,2,1]
     s2 = set(li)
     print(set(li))
    #difference()去除相同项,生成一个新的集合,删除
     s3=s2.difference([1,2,3,11])
     set1 = {1,44,87,23,55}
     set2 = {1,44,88,23,67}
    # difference()比较元素 set1中有而set2中没有
     ret = set1.difference(set2)
     print(ret)#{55, 87}
     print(set1)
     print(set2)
    #difference_update()删除两集合中相同的元素--
    #从set1中删除和set2中相同的元素
     set1.difference_update(set2)
     print(set1)
     print(set2)
    #discard(valyes) 移除元素
    #移除指定元素,不存在不会报错,remove()不存在会报错,建议discard
     set1.discard(4)
     print(set1)
    #intersection()取交集值
    set1 = {1,44,87,23,55}
    set2 = {1,44,88,23,67}
     ret = set1.intersection(set2)
     print(set1)
    #intersection_difference()取交集并更新
    #取交集并更新到set1中
     set1.intersection_update(set2)
     print(set1)
    #symmetric_difference()对称交集
    #对称交集,取两个集合中互不存在的元素,生成一个新的集合
     ret = set1.symmetric_difference(set2)
     print(ret)#{67, 55, 87, 88}
    symmetric_difference_update()对称交集并更新
     set1.symmetric_difference_update(set2)
    #对称交集,并更新元素到set1中
     print(set1)
    #union()并集
    #并集并更新到新的集合中
     ret = set1.union(set2)
     print(ret)
    
    
    # 数据库中原有
    
    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)   #需要添加的集合
    print(up_set)
    print(del_set)
    print(add_set)
    

      

  • 相关阅读:
    Linux Time_wait网络状态 调优
    Linux 系统开启随机端口数量 调优
    Linux 跟踪连接netfilter 调优
    Linux 文件时间记录属性 调优
    Linux 默认线程栈大小 调优
    Linux 系统开启最大线程数 调优
    Linux 系统级开启文件句柄 调优
    Linux 进程级开启最大文件描述符 调优
    参数优化-偏差与方差
    决策树-回归
  • 原文地址:https://www.cnblogs.com/toby-yu/p/8990943.html
Copyright © 2011-2022 走看看