Python遍历字典的四种方法对比

#!/usr/bin/python
from time import clockl = [(x,x) for x in xrange (10000000)] 
d = dict(l) t0 = clock() # 方法一
for i in d: n = d[i]t1 = clock() # 方法二:最慢
for k,v in d.items(): n = vt2 = clock() # 方法三: 最快,推荐方法
for k,v in d.iteritems(): n = v t3 = clock() # 方法四
for k,v in zip(d.iterkeys(),d.itervalues()): n = v t4 = clock() print t1 - t0, t2 - t1, t3 - t2, t4 - t3

以上代码执行五次,结果分别为:

root@ubuntu:~# python test.py
1.892906 11.893149 1.859164 3.45618
root@ubuntu:~# python test.py
2.038906 11.808548 1.969358 3.498633
root@ubuntu:~# python test.py
2.059066 11.473983 1.96166 3.695533
root@ubuntu:~# python test.py
2.092667 11.372379 1.9519 3.656708
root@ubuntu:~# python test.py
2.082951 12.910404 2.021785 3.663504

可见,最快的方法是:

for k,v in d.iteritems(): 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jboss启动初始页面_JBoss BRMS最佳实践– BPM流程初始化层的提示

jboss启动初始页面我过去发布过一些有关迁移策略的文章,仔细研究了流程层,并提供了一些有关jBPM的最佳实践 ,它们都涉及到BPM策略的非常具体的部分。 我想重新讨论最佳实践的主题,然后在智能集成企业级别上,我们讨论使…

Python 学习笔记 多进程 multiprocessing

Python 解释器有一个全局解释器锁(PIL),导致每个 Python 进程中最多同时运行一个线程,因此 Python 多线程程序并不能改善程序性能,不能发挥多核系统的优势,可以通过这篇文章了解。 但是多进程程序不受此影响, Python 2…

Django 学习笔记第一课

Django web 框架介绍: MVC框架的核心思想 核心思想:解耦; 好处:可扩展性,向后兼容,低耦合,高内聚; 普通web结构框架MVC框架 M:model 主要用于数据库层次的封装; V:view…

记住要重置线程上下文类加载器

我很难思考与Java 加载有关的东西,而不是与类加载器有关的东西。 在使用应用程序服务器或OSGi的情况下尤其如此,在这些应用程序服务器或OSGi中,经常使用多个类加载器,并且透明地使用类加载器的能力降低了。 我同意OSGI Alliance B…

EntityFramework Code-First—领域类配置之DataAnnotations

本文出自:https://www.cnblogs.com/tang-tang/p/5510574.html 一、摘要 EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定。 DataAnnotation存在于两个命名空间里: System.Co…

Python 调试工具 PDB(Linux 环境下调试)

转载:http://blog.163.com/gjx0619126/blog/static/12740839320114995947700/ 在python中使用pdb模块可以进行调试 import pdb pdb.set_trace() 也可以使用python -m pdb mysqcript.py这样的方式 (Pdb) 会自动停在第一行,等待调试,这时你可以看看 帮助…

Ubuntu 更新源方法

安装完Ubuntu系统之后,面临的最主要的一个问题就是将apt安装源进行更新,因为在国内直接利用Ubuntu默认的安装源下载安装包速度慢,并且有的时候软件版本也比较旧。今天小编对Ubuntu更新源进行介绍:(这里针对阿里源和清华…

PAT Basic 1002

1002 写出这个数 (20 分)读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​。 输出格式&…

mybatis crud_MyBatis教程– CRUD操作和映射关系–第2部分

mybatis crud为了说明这一点,我们正在考虑以下示例域模型: 会有用户,每个用户可能都有一个博客,每个博客可以包含零个或多个帖子。 这三个表的数据库结构如下: CREATE TABLE user (user_id int(10) unsigned NOT NU…

MATLAB 排序函数(先按第一列排序(主排序)然后再按第二列排序(次排序))

利用 sortrows 函数实现MATLAB 先按第一列排序(主排序)然后再按第二列排序(次排序) A [8,9,6;5,5,2;2,5,8] sortrows(A)A 8 9 65 5 22 5 8ans 2 5 85 5 28 9 6

用PDB库调试Python程序

Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。用pdb调试有多种方式可选:1. 命令行启动目标程序,加上-m参数,这样调用myscrip…

数据操作

mysql> create table employee(-> id int primary key auto_increment,-> emp_name char(12) not null,-> sex enum(male,female) not null default male, #大部分是男的-> age int(3) unsigned not null default 28,-> hire_date date not null,-> post …

/usr/bin/ld: cannot find -l*** 这里***可以指lapack等

在Linux安装编译过程中有时会出现在如下形式的错误: /usr/bin/ld: cannot find -l***这里表示编译过程中找不到以下库名: lib库名(即***).so会发生这样的原因有以下三种情形: 系统没有安装相对应的lib 相对应的lib版本不对 lib&#xff0…

通过分区在Kafka中实现订单保证人

Kafka最重要的功能之一是实现消息的负载平衡,并保证分布式集群中的排序,否则传统队列中将无法实现。 首先让我们尝试了解问题陈述 让我们假设我们有一个主题,其中发送消息,并且有一个消费者正在使用这些消息。 如果只有一个使用…

破解栅栏密码python脚本

今天遇到一个要破解的栅栏密码,写了个通用的脚本 1 #!/usr/bin/env python2 # -*- coding: gbk -*-3 # -*- coding: utf_8 -*-4 # Author: 蔚蓝行5 # http://www.cnblogs.com/duanv6 e raw_input(请输入要解密的字符串\n)7 elen len(e)8 field[]9 for i in range(…

水稻已知os基因号,利用DAVIA进行GO功能富集分析

第1-5步: 已知水稻的基因(os),进行功能注释 第6步 第七步: 第八步: 第九步: 第十步: 第十一步:

二,八,十,十六进制之间转换的相应方法

int num1 Integer.valueOf(n,16); //16进制转换成10进制 Integer.toHexString(Integer i); //10进制转换成16进制 补充:Integer.toHexString(Integer i);该方法得出的字符默认为小写,如果想得到大写结果,则变为Integer.toHexString(Integer i…

IDF实验室-图片里的英语

原题: 一恒河沙中有三千世界,一张图里也可以有很多东西。 不多说了,答案是这个图片包含的那句英文的所有单词的首字母。 首字母中的首字母要大写,答案格式是wctf{一坨首字母} 加油吧少年!看好你哦~ writeup&#xff…

linux 终端调用MATLAB程序

linux 终端调用MATLAB程序 路径:/A/B/C/ 程序名称:xxx.m linux 终端调用MATLAB函数方法 cd /A/B/C/ matlab -nodisplay -nosplash -nodesktop -r "xxx;exit;"

2018-11-02 在代码中进行中文命名实践的短期目标

对中文命名的意义不再赘述, 请参看之前的对在代码中使用中文命名的质疑与回应. 去年中文命名实践的阻力和应对之后, 在一些小项目中继续实践了中文命名(Java/JS/Python等, 详见之前的专栏文章), 涉及领域不少但尚未形成明确的重点项目. 发现了一些在业务相关代码使用中文命名的…