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的Collections模块中counter结构的用法
Jul 07 Python
python算法表示概念扫盲教程
Apr 13 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
python mysql断开重连的实现方法
Jul 26 Python
python类中super() 的使用解析
Dec 19 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
Django使用Profile扩展User模块方式
May 14 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
python Tornado框架的使用示例
Oct 19 Python
python3 kubernetes api的使用示例
Jan 12 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 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
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
浅析JavaScript动画
2015/06/10 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
jQuery表单验证之密码确认
2017/05/22 jQuery
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
eslint 的三大通用规则详解
2019/05/16 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
文明城市标语
2014/06/16 职场文书
优秀教师推荐材料
2014/12/16 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
Python实现双向链表
2022/05/25 Python