【发布时间】:2014-08-03 01:44:01
【问题描述】:
我正在使用具有 8GB 内存和 1.7GHz Core i5 的 Python 2.7.5 @ Mac OS X 10.9.3。我已经测试了如下的时间消耗。
d = {i:i*2 for i in xrange(10**7*3)} #WARNING: it takes time and consumes a lot of RAM
%time for k in d: k,d[k]
CPU times: user 6.22 s, sys: 10.1 ms, total: 6.23 s
Wall time: 6.23 s
%time for k,v in d.iteritems(): k, v
CPU times: user 7.67 s, sys: 27.1 ms, total: 7.7 s
Wall time: 7.69 s
似乎 iteritems 比较慢。 我想知道与直接访问字典相比,iteritems 有什么优势。
更新: 以获得更准确的时间配置文件
In [23]: %timeit -n 5 for k in d: v=d[k]
5 loops, best of 3: 2.32 s per loop
In [24]: %timeit -n 5 for k,v in d.iteritems(): v
5 loops, best of 3: 2.33 s per loop
【问题讨论】:
-
那...不是我期望看到的
-
此answer 可能值得阅读。
-
@HuuNguyen 这并不重要。他问的不是
items()vsiteritems(),而是一个简单的循环+键查找和iteritems()。 (我也没有立即得到这个,因为items()vsiteritems()经常出现......) -
我会添加一个 python 版本。 AFAIK 2 和 3 在这方面差别很大。
-
使用 %timeit 与 %time 计时时,我得到不同的结果。什么是最准确的?
标签: python-2.7 dictionary iterator