算法18--合并两个字典
将字典y合并到字典x中,若x中没有y中的key则x执行添加操作,若x中已有对应key则执行更新操作
merge(dict x , dict y)
若y==none 则直接返回x即可
若x==none,则将x复制y返回
若y!=none and x!=none ,则取出x keys以及y keys 遍历y的每一个key:
若ykey在xkeys中不存在,则在x中添加相应ykey以及相应value
若yKey在xkeys中存在:
若ykey在x中对应value不是dict,则直接更新value=y中ykey对应值即可
若ykey在x中对应value是dict,则递归调用 merge(dict x[ykey], dict y[ykey])
代码如下:
def merge(x, y):#python中dict为引用传递#x==None 直接复制y返回if x==None:x = yreturn x#y==None 直接返回x即可 if y==None:return x#x,y都非空xkeys = list(x.keys())ykeys = list(y.keys())for yk in ykeys:#没有则进行添加if yk not in xkeys:x[yk] = y[yk]#存在该keyif yk in xkeys:#print (type(x[yk]).__name__)#该key对应value类性不为dict 则更新操作if type(x[yk]).__name__ != 'dict':x[yk] = y[yk] #对应类型为dict则递归调用else:merge(x[yk], y[yk])return x
简化如下:
def merge2(x, y):#python中dict为引用传递#x==None 直接复制y返回if x==None:x = yreturn x#y==None 直接返回x即可 if y==None:return x#x,y都非空xkeys = list(x.keys())ykeys = list(y.keys())for yk in ykeys: if yk in xkeys and type(x[yk]).__name__ == 'dict':merge(x[yk], y[yk])else:x[yk] = y[yk]return x
0.边界条件的判断:
1.python中函数参数传递问题:
list dict为可变类型,函数传递相当于指针传递会改变原来的值
2. python中数据类型判断:
type(x[yk]).__name__ != 'dict'
3. python中dict字典应用:
查找:
更新以及新增:
删除:
算法18--合并两个字典相关推荐
- python合并两个字典的内容,使用update方法
python合并两个字典的内容,使用update方法 update() 方法可使用一个字典所包含的键值对来更新己有的字典. 在执行 update() 方法时,如果被更新的字典中己包含对应的键值对,那么 ...
- python字典合并几种方式对比,Python合并两个字典的常用方法与效率比较
本文实例讲述了Python合并两个字典的常用方法与效率比较.分享给大家供大家参考.具体分析如下: 下面的代码举例了5种合并两个字典的方法,并且做了个简单的性能测试 #!/usr/bin/python ...
- 如何在一个表达式中合并两个字典?
我有两个Python字典,我想编写一个返回合并的这两个字典的表达式. 如果update()方法返回其结果而不是就地修改dict,则将是我需要的方法. >>> x = {'a': 1, ...
- 【每日一算法】 合并两个有序链表
微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...
- 【面试题】python怎么合并两个字典
Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个问题,比较直观的想法是将两个字典做相加操作,赋值给结果字典,其代码为: [方 ...
- python中两个字典如何合并为一个_python怎么合并两个字典
Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个问题,比较直观的想法是将两个字典做相加操作,赋值给结果字典,其代码为: py ...
- 两个数组合并排序python_python算法题---合并两个有序数组
leetcode-python-合并两个有序数组 今天第一次电话面试,有点紧张,所以自己感觉表现的不是很好,面试过程中面试官问到了两个算法题,都是leecode上面的题目,而且我都做过,但是当时一下子 ...
- 算法:合并两个有序链表
题目 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...
- C语言算法题 合并两个数组并排序
一.题目内容 给你两个集合,要求{A} + {B}. 注:同一个集合中不会有两个相同的元素. Input 每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示 ...
- 【每日一算法】合并两个有序数组
每日一算法-搜索插入位置 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
最新文章
- 谷歌或被迫拆分Chrome浏览器,谁将会接盘?
- 如果只能通过IE写博客【Do we write blog just only with IE?】
- DataReader 要在事务提交前 CLOSE 掉 否则会报一个:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。...
- volley 调用php接口,使用Volley发送帖子请求并使用PHP接收
- Quartz实现定时任务实例
- sap实施和开发哪个前景_2021年了!还不知道 SAP顾问的职业前景?
- java有几个关键字,Java多线程常用的几个关键字
- Flutter CupertinoSlidingSegmentedControl 分段组件使用解析
- 51CTO博客首页看到我了
- UI设计素材|字体的重要性
- php显示网络图片,PHP在服务器端怎么显示图片呢?
- 甲骨文终获Java编程语言版权
- 数据库文档 SCREW 一键生成数据库文档
- 系统——现有centos7操作系统制作为iso镜像文件
- r语言员工离职_离职员工预测--python
- Java发送短信验证码
- Kivy教程之 08 倒计时App实现timer调用(教程含源码)
- LTU、TTU、DTU、FTU、RTU在电路中的安装位置,功能,区别
- 神兽保佑,永无bug!
- OpenFlow1.0协议解析