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 k-近邻算法实例分享
Jun 11 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
python使用psutil模块获取系统状态
Aug 27 Python
Python ldap实现登录实例代码
Sep 30 Python
使用Python开发SQLite代理服务器的方法
Dec 07 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Python pandas库中的isnull()详解
Dec 26 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 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
php 特殊字符处理函数
2008/09/05 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
理清apply(),call()的区别和关系
2011/08/14 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
python ip正则式
2009/05/07 Python
python3序列化与反序列化用法实例
2015/05/26 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
白莲教口号
2014/06/18 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
2014年管理工作总结
2014/11/22 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android