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清除字符串里非数字字符的方法
Jul 02 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
python实现五子棋小程序
Jun 18 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
python 线程的五个状态
Sep 22 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python的类方法和静态方法
2014/12/13 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python列表的增删改查实例代码
2018/01/30 Python
深入理解Python异常处理的哲学
2019/02/01 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
企业统计员岗位职责
2013/12/13 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
实习介绍信范文
2015/05/05 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL