第二十节,基本数据类型,集合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类修饰的字符一旦被创建就不可改变,所以当对字符串进行修改的时候,需要使用 ...
随机推荐
- mybatis处理特殊符号
当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...
- 自定义GridLayout实现条目的拖动动画特效
1.自定义GridLayout实现增加条目过度动画操作 public class MyGridLayout extends GridLayout { public MyGridLayout(Conte ...
- Linux_Cytoscape
- BestCoder Round #89
过了这么久才来写-- BC的后两道题好难--(第二道题也不怎么简单--) 1001 Fxx and string 正着倒着枚举一次就ok #include<iostream> #inclu ...
- SQLAlchemy入门
什么是SQLAlchemy? 是Python连接SQL数据库的一种方式,需要通过驱动来连接. 是Python中使用最广泛的ORM(对象关系映射)工具之一,即把数据库中的二维表结构映射成一个list对象 ...
- css3选择器:nth-child和nth-of-type之间的差别
<section> <p>我是第1个p标签</p> <p>我是第2个p标签</p> </section> 然后对应2个选择器对应 ...
- Xcode-之项目重命名
一.前言 在iOS开发过程中,对于以前的项目或者想改一下项目的名字,都会遇到比较麻烦的事情.直接改项目名,然而它会牵扯一大堆问题,并且不能把所有的名字都能改过来.有些文件改了项目名后,引导路径错误,导 ...
- Activity生命周期方法调用finish后的不同表现
今天宿舍一个哥们出去面试遇到了这个面试题:"在activity oncreate()调用finish()"生命周期是怎么样的? 我赶紧写了些demo,发现确实很有趣: packag ...
- 常用几种Java Web容器
Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问.开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的We ...
- node读写json文件(进阶)
该方法可用于修改配置文件,直接上代码 fs.readFile('test1.json','utf8',function (err, data) { if(err) console.log(err); ...