在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/