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 可爱的大小写
Sep 06 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python 垃圾收集机制的实例详解
Aug 20 Python
python实现简单中文词频统计示例
Nov 08 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
python使用epoll实现服务端的方法
Oct 16 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
python实现QQ空间自动点赞功能
Apr 09 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
Python操作redis和mongoDB的方法
Dec 19 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
python多线程爬取西刺代理的示例代码
Jan 30 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
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
JS继承 笔记
2011/07/13 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
python中多层嵌套列表的拆分方法
2018/07/02 Python
使用Scrapy爬取动态数据
2018/10/21 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
娱乐地球:Entertainment Earth
2020/01/08 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
品质主管的岗位职责
2013/12/04 职场文书
养殖项目策划书范文
2014/01/13 职场文书
网络技术专业求职信
2014/05/02 职场文书
债务授权委托书范本
2014/10/17 职场文书
财务负责人岗位职责
2015/02/03 职场文书
创卫工作总结2015
2015/04/22 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技