Python字典迭代器性能



在Python中使用字典时,此页面表示遍历字典元素的时间复杂度为O(n),其中n是字典的最大大小。

然而,我不认为有明显的方法可以迭代哈希表的元素。当在哈希表的元素中迭代时,我可以假设dict.iteritems()的性能良好,而不会有太多开销吗?

由于Python中经常使用字典,我认为这是以某种智能的方式实现的。不过,我需要确定一下。

如果你看看Python字典源代码的注释,我认为相关的要点如下:

这些方法(迭代和密钥列表(在每个潜在的条目上循环

作为最大大小的函数(该字典中存储的关键字数量最多(,会有多少个潜在条目?查看同一文档中的以下两个部分:

PyDict_SetItem中的最大字典负载。当前设置为2/3

达到最大负载时的增长率。当前设置为*2。

这表明字典的稀疏性将在1/3~2/3左右(除非增长率设置为*4,否则为1/6~2/3(。因此,基本上,你将为每个键检查多达3个(如果*4,则为6个(潜在条目。

当然,无论是3个条目还是1000个条目,它仍然是O(n(,但3似乎是一个可以接受的常数因子。

顺便说一句,以下是源代码的其余部分&文档,包括DictObject:的文档

http://svn.python.org/projects/python/trunk/Objects/

最新更新