Python中对dict的遍历有很多种方法,本文中对几种方法性能进行比较简单的对比,给大家一个参考
测试环境
Windows10 + Python2.7.8
测试代码
首先看我们的测试代码
dict_test.py
|
|
运行结果
运行四次
第一次
0: 2.55650656968
1: 2.81541793721
2: 2.60263192552
3: 13.3213878899
4: 2.88246335262
5: 4.9362081227
第二次
0: 2.59641417876
1: 2.66579489621
2: 2.57118659521
3: 14.0514050106
4: 3.30343528077
5: 5.3133750038
第三次
0: 2.54319498334
1: 2.71084397889
2: 2.50744050815
3: 13.2553875455
4: 2.92418555176
5: 4.9001545927
第四次
0: 2.61268754242
1: 2.72744719433
2: 2.73589164328
3: 13.613833514
4: 3.02585041181
5: 5.39626910881
结论
一般情况下耗时排序(从大到小)
for k,v in dict.items()
>>
for k,v in zip(d.iterkeys(),d.itervalues())
>
for k,v in d.iteritems()
>
for i in d.keys()
>
for i in d.iterkeys()
=
for i in d
可以知道,dict.items()方法的耗时要远远大于其他方法,特别是在数据量大的时候,要慎用
其他几种方法的差别都不是很大,可以根据实际情况选择;其中dict.iteritems()效率较高,代码上也比较直观,推荐使用
理解这几种遍历方式的差异的关键就在于理解dict.items()与dict.iteritems()的区别,dict.keys()和dict.iterkeys()也是类似
items()返回的是一个列表,所以当dict很大时会消耗大量内存,iteritems作用大致一样,但是会返回一个迭代器对象而不是列表。在python3中,items()进行了优化,也只返回迭代器,所以取消iteritems方法