Python合并两个字典的常用方法与效率比较


Posted in Python onJune 17, 2015

本文实例讲述了Python合并两个字典的常用方法与效率比较。分享给大家供大家参考。具体分析如下:

下面的代码举例了5种合并两个字典的方法,并且做了个简单的性能测试

#!/usr/bin/python 
import time 
def f1(d1, d2): 
  return dict(d1, **d2) 
def f2(d1, d2): 
  return dict(d1.items() + d2.items()) 
def f3(d1, d2): 
  d = d1.copy() 
  d.update(d2) 
  return d 
def f4(d1, d2): 
  d1.update(d2) 
  return d1 
def f5(d1, d2): 
  d = dict(d1) 
  d.update(d2) 
  return d 
def f6(d1, d2): 
  return (lambda a, b: (lambda a_copy: a_copy.update(b) or a_copy)(a.copy()))(d1, d2) 
def f7(d1, d2): 
  d = {} 
  d.update(d1) 
  d.update(d2) 
  return d 
def t(f, n): 
  st = time.time() 
  for i in range(1000000): 
    dic1 = {'a':'AA','b':'BB','c':'CC'} 
    dic2 = {'A':'aa','B':'bb','C':'cc'} 
    f(dic1, dic2) 
  et = time.time() 
  print '%s cost:%s'%(n, et-st) 
t(f1, 'f1') 
t(f2, 'f2') 
t(f3, 'f3') 
t(f4, 'f4') 
t(f5, 'f5') 
t(f6, 'f6') 
t(f7, 'f7')

除了f4方法会对字典d1造成破坏性修改之外,另外的几种方法都是把合并的结果作为新的字典返回。

下面是测试结果:

f1 cost:2.382999897 
f2 cost:4.45399999619 
f3 cost:3.02100014687 
f4 cost:1.73000001907 
f5 cost:2.3710000515 
f6 cost:2.89700007439 
f7 cost:2.35600018501

可以看出f4最为高效,如果不需要保留原字典的话推荐使用f4方法。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python用ConfigObj读写配置文件的实现代码
Mar 04 Python
pyqt4教程之widget使用示例分享
Mar 07 Python
从零学Python之入门(三)序列
May 25 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
解决Python requests 报错方法集锦
Mar 19 Python
Python实现多并发访问网站功能示例
Jun 19 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
Python列表对象实现原理详解
Jul 01 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
Python3 Click模块的使用方法详解
Feb 12 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
教你怎么用python selenium实现自动化测试
May 27 Python
Python操作串口的方法
Jun 17 #Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 #Python
Django中模型Model添加JSON类型字段的方法
Jun 17 #Python
Python中map和列表推导效率比较实例分析
Jun 17 #Python
wxPython使用系统剪切板的方法
Jun 16 #Python
Python读取键盘输入的2种方法
Jun 16 #Python
Python本地与全局命名空间用法实例
Jun 16 #Python
You might like
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
js实现双人五子棋小游戏
2020/05/28 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python列表切片操作实例总结
2019/02/19 Python
Python列表操作方法详解
2020/02/09 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python3.9新特性详解
2020/10/10 Python
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
实习指导老师评语
2014/04/26 职场文书
离婚协议书格式
2014/11/21 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
初中语文教学反思范文
2016/03/03 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis