基本数据类型,集合set、综合应用新数据更新老数据

创建两个字典
新数据,更新原始数据,a为原始数据,b为新数据

1,分别获取到a字典和b字典的key(键),将两个字典的键分别转换成两个集合

2,找出a2集合里存在,b2集合里不存在的元素,得到:{'#2', '#3'}(需要删除:?)

3,找出b2集合里存在,a2集合里不存在的元素,得到:{'#4', '#7'}(需要新建:?)

4,找出a2集合和b2集合有交集的元素,也就是a2集合和b2集合都存在的元素,得到:{'#1'}(需要更新:?)

5,在原始数据里(将原始数据有的,新数据没有的删除)

6,在原始数据里(将新数据有的,原始数据没有的追加进去)

7,在原始数据里(原始数据和新数据都有的,将新数据的值更新到原始数据里)

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. #创建两个字典
  4. #新数据,更新原始数据,a为原始数据,b为新数据
  5. a = {
  6. "#1":11,
  7. "#2":22,
  8. "#3":100
  9. }
  10. print("原始数据",a)
  11. b = {
  12. "#1":33,
  13. "#4":22,
  14. "#7":100
  15. }
  16. print("新的数据",b)
  17. #取出a字典里的key(键),得到:dict_keys(['#1', '#2', '#3'])
  18. a1 = a.keys()
  19. #将a1得到的键转换成集合,得到:{'#3', '#2', '#1'}
  20. a2 = set(a1)
  21.  
  22. #取出b字典里的key(键),得到:dict_keys(['#4', '#1', '#7'])
  23. b1 = b.keys()
  24. #将b1得到的键转换成集合,得到:{'#7', '#4', '#1'}
  25. b2 = set(b1)
  26.  
  27. #找出a2集合里存在,b2集合里不存在的元素,得到:{'#2', '#3'}(需要删除:?)
  28. a3 = a2.difference(b2)
  29. #找出b2集合里存在,a2集合里不存在的元素,得到:{'#4', '#7'}(需要新建:?)
  30. b3 = b2.difference(a2)
  31. #找出a2集合和b2集合有交集的元素,也就是a2集合和b2集合都存在的元素,得到:{'#1'}(需要更新:?)
  32. c = a2.intersection(b2)
  33.  
  34. #删除原始数据,需要删除的
  35. #a3集合里的是需要删除的
  36. for i in a3:
  37. #a3集合里每次循环到的作为a字典的键,删除此键元素
  38. del a[i]
  39. print("\n")
  40. print("删除原始数据里面,新数据不存在的",a)
  41.  
  42. #新建原始数据,需要新建的
  43. #b3集合里的是需要新建的
  44. for i in b3:
  45. #将b3集合里循环到的重新赋值给一个变量
  46. j1 = i
  47. #将b3集合里循环的的作为b字典的键,获取到此键对应的值,重新赋值给一个变量
  48. j2 = b[i]
  49. #将新的元素追加到a字典
  50. a[j1] = j2
  51. print("新数据里面有,原始数据里面没有的,添加到原始数据",a)
  52.  
  53. #更新原始数据,需要更新的
  54. #c集合里的就是需要更新的
  55. for i in c:
  56. g = i
  57. a[g] = b[g]
  58. print("原始数据里有,新数据里也有的,将新数据更新到原始数据",a)

第二十节,基本数据类型,集合set、综合应用新数据更新老数据的更多相关文章

  1. 大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)

                                                        大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中,我们讲 ...

  2. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  3. 风炫安全WEB安全学习第二十节课 反射型XSS讲解

    风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...

  4. 第十九节,基本数据类型,集合set

    集合set,无序,是不允许重复内容的,也就是不允许重复元素,如果有重复,会自动忽略,可接收可迭代类型 (一般用于需要判断和处理交集时候用到) 集合与字典的区别是,集合没有键只有值,字典是有键的字典是一 ...

  5. [ExtJS5学习笔记]第二十节 Extjs5配合数组的push方法,动态创建并加载组件

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39226773 官方例子:http://docs.sencha.com/extjs/5. ...

  6. 第二十节:Asp.Net Core WebApi生成在线文档

    一. 基本概念 1.背景 使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战. Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题. 它具有诸 ...

  7. 第二十节,使用RNN网络拟合回声信号序列

    这一节使用TensorFlow中的函数搭建一个简单的RNN网络,使用一串随机的模拟数据作为原始信号,让RNN网络来拟合其对应的回声信号. 样本数据为一串随机的由0,1组成的数字,将其当成发射出去的一串 ...

  8. 第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)

    一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票.淘宝的双十一抢购),如果把一个用户看做 ...

  9. 第二十节:详细讲解String和StringBuffer和StringBuilder的使用

    前言 在 Java中的字符串属于对象,那么Java 中提供了 String 类来创建和操作字符串,即是使用对象:因为String类修饰的字符一旦被创建就不可改变,所以当对字符串进行修改的时候,需要使用 ...

随机推荐

  1. redis - 主从复制与主从切换

    redis2.8之前本身是不支持分布式管理的,一般建议使用redis3.0及以后版本 redis主从切换的方法 keepalive  或者 使用sentinel线程管理 说明如何使用sentinel实 ...

  2. Gdiplus 贴图(助记) -------------------从资源中载入PNG图片

    从资源中载入图片,亦可改为从内从中加载: void LoadResImage(int nResID,Image * &lpImage) { HINSTANCE hIns=AfxGetInsta ...

  3. 跨域资源共享(Cross-Origin Resource Sharing)

    目前中文方面的资料还比较少,能搜索到的那仅有的几篇相关介绍,也几乎是雷同的,其中C#方面的更是少之又少. XMLHttpRequest接口是Ajax的根本,而Ajax考虑到安全性的问题,是禁止跨域访问 ...

  4. 神州数码品众_Android面试

    1.进程的定义,进程的调度: 2.线程的定义,多线程出错的描述: 3.数组和链表的定义和区别: 4.对链表的反序: 5.tree高度的计算: 6.设计一个存储系统,可以从客户端进行上传文件: 7.从长 ...

  5. 第六十八节,htnl全局属性和其他属性

    htnl全局属性和其他属性 学习要点: 1.实体 2.元数据 3.全局属性 本章主要探讨HTML5中的HTML实体.以及HTML核心构成的元数据,最后了解一下HTML中的全局属性. 一.实体 HTML ...

  6. Spring Security(02)——关于登录

    目录 1.1     form-login元素介绍 1.1.1    使用自定义登录页面 1.1.2    指定登录后的页面 1.1.3    指定登录失败后的页面 1.2     http-basi ...

  7. MongoDB高级操作

    参考MongoDB菜鸟教程 一.$type操作符 MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1   String 2   Object 3   Array 4   ...

  8. Docker私有仓库3

    http://www.cnblogs.com/womars/p/5906435.html(上篇地址) 三.测试上两篇 #测试一下 [root@lh- data]# pwd /opt/data [roo ...

  9. MVC5 Entity Framework学习之创建复杂的数据模型

    目录(?)[-] 使用属性来自定义数据模型 DataType属性 StringLength属性 Column 属性 完成对Student实体的更改 Required 属性 Display 属性 Ful ...

  10. 简单介绍移动端CSS3单位rem的用法

    PC端大部份是用px单位,小部分用em单位,而移动端,请全部用rem单位吧.目前大部份设备,包括但不限于iOS 5+.Android 2.3+.Window Phone 8+都是可以兼容的,具体兼容表 ...