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实现微信模板消息
Dec 21 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
numpy.where() 用法详解
May 27 Python
pip安装python库的方法总结
Aug 02 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
python装饰器使用实例详解
Dec 14 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python中加背景音乐如何操作
Jul 19 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
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
mysql 字段类型说明
2007/04/27 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
ThinkPHP控制器详解
2015/07/27 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
php多线程并发实现方法
2016/09/30 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JS继承 笔记
2011/07/13 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
浅析javascript的return语句
2015/12/15 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
详解Vite的新体验
2021/02/22 Javascript
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
NumPy 数组使用大全
2019/04/25 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
四大名著读书笔记
2015/06/25 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis