在Python 3中调用dict.keys()的复杂性是多少?

Fil*_*und 4 python dictionary time-complexity asymptotic-complexity python-3.x

什么是dict.keys()python 的渐近复杂性?

我找到了这个网站,但它没有答案.我使用的是Python 3,但我猜这不是特定于版本的.

Ale*_*ley 5

在Python 3中,dict.keys()返回一个视图对象.从本质上讲,这只是一个直接进入字典键的窗口.例如,在哈希表上没有循环来构建新对象.这使得它称为恒定时间,即O(1),操作.

这里开始实现字典的查看对象; 新视图对象的创建使用dictview_new.该函数所做的就是创建指向字典并增加引用计数(用于垃圾跟踪)的新对象.

在Python 2中,dict.keys()返回一个列表对象.要创建这个新列表,Python必须遍历哈希表,将字典的键放入列表中.这是作为功能实现的dict_keys.这里的时间复杂度与字典的大小成线性关系,即O(n),因为必须访问表中的每个槽.

dict.viewkeys()Python 2中的NB 与Python 3中的相同dict.keys().