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

在Python 3中调用dict.keys()的复杂性是什么?,python,python-3.x,dictionary,time-complexity,asymptotic-complexity,Python,Python 3.x,Dictionary,Time Complexity,Asymptotic Complexity,python中dict.keys()的渐进复杂性是多少 我找到了,但没有答案。我正在使用Python3,但我想这不是特定于版本的。在Python3中,dict.keys()返回一个。本质上,这只是一个直接查看字典键的窗口。例如,没有在哈希表上循环来构建新对象。这使得调用它成为一个常数时间,即O(1),操作 字典的视图对象是从开始实现的;创建新视图对象时使用。该函数所做的只是创建指向字典的新对象,并增加引用计数(用于垃圾跟踪) 在Python 2中,dict.keys()返回一个列表对象。要创建这

python中dict.keys()的渐进复杂性是多少


我找到了,但没有答案。我正在使用Python3,但我想这不是特定于版本的。

在Python3中,
dict.keys()
返回一个。本质上,这只是一个直接查看字典键的窗口。例如,没有在哈希表上循环来构建新对象。这使得调用它成为一个常数时间,即O(1),操作

字典的视图对象是从开始实现的;创建新视图对象时使用。该函数所做的只是创建指向字典的新对象,并增加引用计数(用于垃圾跟踪)

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


注意:Python2中的
dict.viewkeys()
与Python3中的
dict.keys()
相同。

它是
O(1)
,但需要一个额外的函数调用。它是版本特定的,在Python2中
keys()
返回列表,在Python3中返回字典视图对象。您正在查看dict.keys中的操作吗()比如字典视图的生成本身?可能的重复我不认为这是重复的-另一个问题是关于dicts中的
,这是关于方法本身。它们密切相关,但不相同。