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 相关文章推荐
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
python实现接口并发测试脚本
Jun 25 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
python函数调用,循环,列表复制实例
May 03 Python
python可迭代对象去重实例
May 15 Python
python打开音乐文件的实例方法
Jul 21 Python
python 实现单例模式的5种方法
Sep 23 Python
基于Python和openCV实现图像的全景拼接详细步骤
Oct 05 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
极典R601SW收音机
2021/03/02 无线电
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
php array_map()函数实例用法
2021/03/03 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
python的id()函数介绍
2013/02/10 Python
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
python机器学习之神经网络实现
2018/10/13 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python实现感知器算法(批处理)
2019/01/18 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python错误的处理方法
2020/06/23 Python
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
儿科护士实习自我鉴定
2013/10/17 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
英语系毕业生求职信
2014/07/13 职场文书
学校食品安全责任书
2015/01/29 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python