zoukankan      html  css  js  c++  java
  • 练习-python集合set

     1 #寻找差异
     2 #要求:原来没有的,新加入;原来有的,更新;新的没有,原来的有,删除原来的
     3 #无需考虑内部元素改变
     4 #数据库中原有
     5 old_dict = {
     6     "#1":{ "hostname":"c1", "cpu_count": 2, "mem_capicity": 80 },
     7     "#2":{ "hostname":"c1", "cpu_count": 2, "mem_capicity": 80 },
     8     "#3":{ "hostname":"c1", "cpu_count": 2, "mem_capicity": 80 }
     9 }
    10 
    11 #cmdb 新汇报的数据
    12 new_dict = {
    13     "#1":{ "hostname":"c1", "cpu_count": 2, "mem_capicity": 800 },
    14     "#3":{ "hostname":"c1", "cpu_count": 2, "mem_capicity": 80 },
    15     "#4":{ "hostname":"c2", "cpu_count": 2, "mem_capicity": 80 }
    16 }
    17 
    18 old = set(old_dict.keys())
    19 new = set(new_dict.keys())
    20 update_set = old.intersection(new)    #交集,输出更新的数据
    21 delete_set = old.symmetric_difference(update_set)   #差集,新的没有,旧的有的,删除
    22 add_set = new.symmetric_difference(update_set)     #差集,新的有,旧的没有,添加
    23 print(update_set)
    24 print(delete_set)
    25 print(add_set)
    26 old_dict.pop("#2")
    27 old_dict.update(new_dict)
    28 print(old_dict)

    #执行结果:

    {'#1', '#3'}
    {'#2'}
    {'#4'}
    {'#4': {'mem_capicity': 80, 'hostname': 'c2', 'cpu_count': 2}, '#3': {'mem_capicity': 80, 'hostname': 'c1', 'cpu_count': 2}, '#1': {'mem_capicity': 800, 'hostname': 'c1', 'cpu_count': 2}}

  • 相关阅读:
    极简Docker和Kubernetes发展史
    什么是健身
    《高效休息法》IT从业者如何高效休息
    《我们赖以生存的隐喻》文学中的面向对象
    sequelize时间自动格式化
    什么是消息队列
    node.js中this指向失效解决
    node.js的async和await
    node.js箭头函数使用
    node.js如何批量赋值
  • 原文地址:https://www.cnblogs.com/repo/p/5421600.html
Copyright © 2011-2022 走看看