Python学习笔记_字典(Dict)_遍历_不同方法_性能测试对比

今天专门把python的字典各种方法对比测试了一下性能效果.

 

测试代码如下:

 1 def dict_traverse():
 2     from time import clock
 3     my_dict = {'name': 'Jim', 'age': '20', 'height': '180cm', 'weight': '60kg'}
 4 
 5     t_start = clock()
 6     for key in my_dict:    # 性能最差写法.无优化
 7         print 'Type01.01: %s --- %s' % (key, my_dict[key])
 8     t1 = clock()
 9 
10     for key in my_dict:    # 性能较上优,可见get()方法作了优化.
11         print 'Type01.02: %s --- %s' % (key, my_dict.get(key))
12     t2 = clock()
13 
14     for key in my_dict.keys():    # keys()方法也是作了优化.
15         print 'Type02.01: %s --- %s' % (key, my_dict[key])
16     t3 = clock()
17 
18     for key in my_dict.keys():    # 
19         print 'Type02.02: %s --- %s' % (key, my_dict.get(key))
20     t4 = clock()
21 
22     for key, value in my_dict.items():   # 标准写法,性能最佳写法
23         print 'Type03: %s --- %s' % (key, value)
24     t5 = clock()
25 
26     for key, value in my_dict.iteritems():    # 性能较上,有少量损失.
27         print 'Type04: %s --- %s' % (key, value)
28     t6 = clock()
29 
30     for key, value in zip(my_dict.iterkeys(),my_dict.itervalues()):    # 性能较差.
31         print 'Type05: %s --- %s' % (key, value)
32     t7 = clock()
33 
34     print '********** time cost ******************'
35     print 'Type01.01 -- total time : ', t1-t_start
36     print 'Type01.02 -- total time : ', t2-t1
37     print 'Type02.01 -- total time : ', t3-t2
38     print 'Type02.02 -- total time : ', t4-t3
39     print 'Type03 -- total time : ', t5-t4
40     print 'Type04 -- total time : ', t6-t5
41     print 'Type05 -- total time : ', t7-t6
42 
43 
44 
45 if __name__ == '__main__':
46     dict_traverse()

 

经过多次运行,可发现不同写法,耗时是有差异.

对比结果如下图所示.  

 

综上对比可发现:

对于字典遍历,推荐如下写法,性能最优.

1 for k, v in my_dict.items():
2     print k, v 

 

转载于:https://www.cnblogs.com/selfrebuild/p/4206367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值