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操作时间和日期之asctime()方法的使用
May 22 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
Python3 操作符重载方法示例
Nov 23 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
Python中super函数用法实例分析
Mar 18 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
django如何自己创建一个中间件
Jul 24 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
python正则表达式re.search()的基本使用教程
May 21 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
adodb与adodb_lite之比较
2006/12/31 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
Js组件的一些写法
2010/09/10 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
jQuery知识点整理
2015/01/30 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
JavaScript实现区块链
2018/03/14 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python双向链表实现实例代码
2013/11/21 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Python 随机按键模拟2小时
2020/12/30 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
办公室主任竞聘演讲稿
2014/05/15 职场文书
作风建设演讲稿
2014/05/23 职场文书
化工实习心得体会
2014/09/09 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
出纳岗位职责范本
2015/03/31 职场文书
《风筝》教学反思
2016/02/23 职场文书