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获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
python GUI实例学习
Nov 21 Python
python如何使用unittest测试接口
Apr 04 Python
python print 按逗号或空格分隔的方法
May 02 Python
python3.x实现发送邮件功能
May 22 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
python-xpath获取html文档的部分内容
Mar 06 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
python跨文件使用全局变量的实现
Nov 17 Python
对PyTorch中inplace字段的全面理解
May 22 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
php rsa加密解密使用详解
2015/01/14 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python自动生产表情包
2017/03/17 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
Python模拟用户登录验证
2017/09/11 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
Laravel中Kafka的使用详解
2021/03/24 PHP
新闻记者个人求职的自我评价
2013/11/28 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
如何正确理解python装饰器
2021/06/15 Python
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
Python实现日志实时监测的示例详解
2022/04/06 Python