zoukankan      html  css  js  c++  java
  • set集合

    小练习

    下列两个字典,使用set得出需要修改(交集)、需要删除(差集)、需要添加的内容。

    old_dict = {
        "#1":{'hostname':'c1', 'cpu': 2, 'dimm':2048},
        "#2":{'hostname':'c2', 'cpu': 2, 'dimm':2048},
        "#3":{'hostname':'c3', 'cpu': 2, 'dimm':2048},
    }
    
    new_dict = {
        "#1":{'hostname':'c1', 'cpu': 2, 'dimm':4096},
        "#3":{'hostname':'c3', 'cpu': 2, 'dimm':2048},
        "#4":{'hostname':'c4', 'cpu': 2, 'dimm':2048},
    }
    
    #只对keys作比较,得到所有keys的列表,并转为set集合
    old_list = set(old_dict.keys())
    new_list = set(new_dict.keys())
    
    #需要更新的内容(交集)
    update_set  = old_list .intersection(new_list)
    
    #需要删除的内容(差集)
    delete_set = old_list.difference(update_set)
    
    #需要添加的内容
    add_set = new_list.difference(update_set)
    
    print(update_set)
    print(delete_set)
    print(add_set)
    

    运行结果:

    {'#1', '#3'}
    {'#2'}
    {'#4'}
    

    图解:

    set中difference和symmetric_difference的区别

    例:

    s1 = set([11,22,33])
    s2 = set([33,44])
    ret1 = s1.difference(s2)
    ret2 = s1.symmetric_difference(s2)
    print(ret1)
    print(ret2)
    

    运行结果:

    {11, 22}
    {11, 44, 22}
    

    说明:

    ret1中只循环s1
    ret2中先循环s1,然后循环s2
  • 相关阅读:
    2017.10.12
    2017.10.25
    2017.10.24
    进度条06
    课堂练习(返回一个环状一维整数数组中最大子数组的和)
    团队项目成员和题目
    团队作业--四则运算网页版
    进度条04
    个人作业(最大子数组)
    进度条03
  • 原文地址:https://www.cnblogs.com/jacky-zhao/p/8125731.html
Copyright © 2011-2022 走看看