gpt4 book ai didi

Python字典迭代器性能

转载 作者:太空狗 更新时间:2023-10-30 00:10:27 25 4
gpt4 key购买 nike

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

但是,我认为没有明显的方法可以遍历哈希表的元素。在遍历哈希表的元素时,我可以假设 dict.iteritems() 的性能良好,而不会产生太多开销吗?

由于字典在 Python 中被大量使用,我认为这是以某种巧妙的方式实现的。不过,我需要确定一下。

最佳答案

如果您查看 notes on Python's dictionary source code ,我认为相关的要点如下:

Those methods (iteration and key listing) loop over every potential entry

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

Maximum dictionary load in PyDict_SetItem. Currently set to 2/3

Growth rate upon hitting maximum load. Currently set to *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/

关于Python字典迭代器性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31214308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com