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编写百度贴吧的简单爬虫
Apr 02 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
python 字典修改键(key)的几种方法
Aug 10 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
Python编程中flask的简介与简单使用
Dec 28 Python
值得收藏的10道python 面试题
Apr 15 Python
Python这样操作能存储100多万行的xlsx文件
Apr 16 Python
Python标准库itertools的使用方法
Jan 17 Python
Python3基本输入与输出操作实例分析
Feb 14 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP中文汉字验证码
2007/04/08 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
python去除扩展名的实例讲解
2018/04/23 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
pandas 将索引值相加的方法
2018/11/15 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
大学生军训感想
2014/02/16 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
群众路线个人整改方案
2014/10/25 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js