<p>Python字典的工作方式类似于哈希表。你所做的每一次查找都是大致恒定的时间。在这种情况下,不必担心性能。你知道吗</p>
<p>如果您真的想保存一种迭代器到您的字典,您可以使用字典和列表。字典中的每个键都有一个列表元素的索引,这是一个包含单个元素的示例:</p>
<pre><code>my_dictionary = dict(zip('key', 0))
actual_values = [value]
</code></pre>
<p>我们使用字典和列表得到相应的键值:</p>
<pre><code>value = actual_values[my_dictionary['key']]
</code></pre>
<p>如果你问的是这样的问题:</p>
<pre><code>list_index = my_dictionary.get(key, None)
if list_index is not None:
actual_values[list_index] = value
</code></pre>
<p>现在您只进行一个字典访问,另一个是列表索引。你知道吗</p>
<p>告诉你这不值得担心。我计算了使用字典<strong>1</strong>时间和数组<strong>n</strong>时间与使用字典<strong>n</strong>时间之间的时间差。这些是使用<code>timeit</code>对一个有40000个键的字典的结果:</p>
<pre><code>╔═════╦══════════════╦═════════════╗
║ n ║ Direct Index ║ Array Index ║
╠═════╬══════════════╬═════════════╣
║ 1 ║ 1.913920 s ║ 2.012300 s ║
║ 2 ║ 2.214828 s ║ 2.035465 s ║
║ 10 ║ 2.932283 s ║ 2.600727 s ║
║ 100 ║ 9.425869 s ║ 8.032046 s ║
╚═════╩══════════════╩═════════════╝
</code></pre>
<p>如果您需要使用同一个键100次,您将获得大约17%的性能提升!注意,如果只使用一次dictionary,那么解决方案(array+dictionary)实际上会比预期的差一些。对于您介绍的案例(n=2),您的性能增益仅为8%。你知道吗</p>
<P>记住,Python不是C或C++。如果这是一个实际的性能问题,那么就不应该使用Python。你知道吗</p>