<p>不仅<code>del</code>更容易理解,而且似乎比<a href="http://docs.python.org/library/stdtypes.html#dict.pop" rel="noreferrer">pop()</a>稍快:</p>
<pre><code>$ python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "for k in d.keys():" " if k.startswith('f'):" " del d[k]"
1000000 loops, best of 3: 0.733 usec per loop
$ python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "for k in d.keys():" " if k.startswith('f'):" " d.pop(k)"
1000000 loops, best of 3: 0.742 usec per loop
</code></pre>
<hr/>
<p>编辑:感谢Alex Martelli提供了如何进行基准测试的指导。希望我没有在任何地方滑倒。</p>
<p>首先测量复制所需的时间:</p>
<pre><code>$ python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "d1 = d.copy()"
1000000 loops, best of 3: 0.278 usec per loop
</code></pre>
<p>复制的dict上的基准:</p>
<pre><code>$ python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "d1 = d.copy()" "for k in d1.keys():" " if k.startswith('f'):" " del d1[k]"
100000 loops, best of 3: 1.95 usec per loop
$ python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "d1 = d.copy()" "for k in d1.keys():" " if k.startswith('f'):" " d1.pop(k)"
100000 loops, best of 3: 2.15 usec per loop
</code></pre>
<p>减去复制成本,我们得到<code>pop()</code>的1.872 usec和<code>del</code>的1.672 usec。</p>