第二十节,基本数据类型,集合set、综合应用新数据更新老数据
基本数据类型,集合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,在原始数据里(原始数据和新数据都有的,将新数据的值更新到原始数据里)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#创建两个字典
#新数据,更新原始数据,a为原始数据,b为新数据
a = {
"#1":11,
"#2":22,
"#3":100
}
print("原始数据",a)
b = {
"#1":33,
"#4":22,
"#7":100
}
print("新的数据",b)
#取出a字典里的key(键),得到:dict_keys(['#1', '#2', '#3'])
a1 = a.keys()
#将a1得到的键转换成集合,得到:{'#3', '#2', '#1'}
a2 = set(a1) #取出b字典里的key(键),得到:dict_keys(['#4', '#1', '#7'])
b1 = b.keys()
#将b1得到的键转换成集合,得到:{'#7', '#4', '#1'}
b2 = set(b1) #找出a2集合里存在,b2集合里不存在的元素,得到:{'#2', '#3'}(需要删除:?)
a3 = a2.difference(b2)
#找出b2集合里存在,a2集合里不存在的元素,得到:{'#4', '#7'}(需要新建:?)
b3 = b2.difference(a2)
#找出a2集合和b2集合有交集的元素,也就是a2集合和b2集合都存在的元素,得到:{'#1'}(需要更新:?)
c = a2.intersection(b2) #删除原始数据,需要删除的
#a3集合里的是需要删除的
for i in a3:
#a3集合里每次循环到的作为a字典的键,删除此键元素
del a[i]
print("\n")
print("删除原始数据里面,新数据不存在的",a) #新建原始数据,需要新建的
#b3集合里的是需要新建的
for i in b3:
#将b3集合里循环到的重新赋值给一个变量
j1 = i
#将b3集合里循环的的作为b字典的键,获取到此键对应的值,重新赋值给一个变量
j2 = b[i]
#将新的元素追加到a字典
a[j1] = j2
print("新数据里面有,原始数据里面没有的,添加到原始数据",a) #更新原始数据,需要更新的
#c集合里的就是需要更新的
for i in c:
g = i
a[g] = b[g]
print("原始数据里有,新数据里也有的,将新数据更新到原始数据",a)
第二十节,基本数据类型,集合set、综合应用新数据更新老数据的更多相关文章
- 大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)
大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中,我们讲 ...
- centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 ...
- 风炫安全WEB安全学习第二十节课 反射型XSS讲解
风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...
- 第十九节,基本数据类型,集合set
集合set,无序,是不允许重复内容的,也就是不允许重复元素,如果有重复,会自动忽略,可接收可迭代类型 (一般用于需要判断和处理交集时候用到) 集合与字典的区别是,集合没有键只有值,字典是有键的字典是一 ...
- [ExtJS5学习笔记]第二十节 Extjs5配合数组的push方法,动态创建并加载组件
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39226773 官方例子:http://docs.sencha.com/extjs/5. ...
- 第二十节:Asp.Net Core WebApi生成在线文档
一. 基本概念 1.背景 使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战. Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题. 它具有诸 ...
- 第二十节,使用RNN网络拟合回声信号序列
这一节使用TensorFlow中的函数搭建一个简单的RNN网络,使用一串随机的模拟数据作为原始信号,让RNN网络来拟合其对应的回声信号. 样本数据为一串随机的由0,1组成的数字,将其当成发射出去的一串 ...
- 第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)
一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票.淘宝的双十一抢购),如果把一个用户看做 ...
- 第二十节:详细讲解String和StringBuffer和StringBuilder的使用
前言 在 Java中的字符串属于对象,那么Java 中提供了 String 类来创建和操作字符串,即是使用对象:因为String类修饰的字符一旦被创建就不可改变,所以当对字符串进行修改的时候,需要使用 ...
随机推荐
- 关于scanf的返回值
今天写一个小程序时误用while(scanf("%d",&b)!=a),以为scanf的返回值就是输入的值. 其实真相是: scanf返回接收到的变量值的个数. int a ...
- code style
http://www.jianshu.com/p/0a984f999592# https://github.com/drakeet/LayoutFormatter https://github.com ...
- Mybatis的失误填坑-java.lang.Integer cannot be cast to java.lang.String
Mybatis的CRUD小Demo 为方便查看每次的增删改结果,封装了查询,用来显示数据库的记录: public static void showInfo(){ SqlSession session ...
- OpenVPN GUI: "No TAP-WIN32 adapters on this system"
找到C:\Program Files\TAP-Windows\bin 管理员身份运行: deltapall.bat addtap.bat
- Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
感觉 Android 到处都是坑,每个地方都要把人折腾半天. 今天来简单说说 Android之ActionBar.Tabs.Fragment.ViewPager 实现标签页切换并缓存页面 关于他们的介 ...
- wangEditor的jQuery插件化
wangEditor是一款优秀的Web富文本编辑器.这篇随笔中讲述的wangEditor版本是2.1.22,由于它依赖于jQuery(作者打算在第三版中取消对jQuery的依赖),那么如果能使用$(& ...
- js--性能优化(转)
前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...
- [SQL基础教程]1-4 SQL 表的创建
[SQL基础教程]1-4 SQL 表的创建 创建数据库 语法 CREATE DATABASE <数据库名称> // example CREATE DATABASE shop; 创建表 语法 ...
- Java 泛型 泛型方法
Java 泛型 泛型方法 @author ixenos 泛型方法可以定义在普通类中,也可以定义在泛型类中 类型变量放在修饰符(如public static)后面,返回类型的前面 一个static方法无 ...
- Unity5系列资源管理AssetBundle——更新实现
前面我们研究了AssetBundle的打包与加载,现在我们来了解下如何在项目中根据版本号更新内容. 最最重要的一点,细心的朋友应该看到了在加载AssetBundle的MrcAssetManager类中 ...