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调用cmd复制文件代码分享
Dec 27 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
python中upper是做什么用的
Jul 20 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
python定义具名元组实例操作
Feb 28 Python
TensorFlow的自动求导原理分析
May 26 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
使用Apache的rewrite技术
2006/06/22 PHP
PHP个人网站架设连环讲(二)
2006/10/09 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
理解python正则表达式
2016/01/15 Python
浅谈五大Python Web框架
2017/03/20 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
计算机科学技术自荐信
2014/06/12 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android