python中dict.keys()
的渐近复杂性是什么?
我找到了this website,但它没有答案。我使用的是Python 3,但我猜这不是特定于版本的。
答案 0 :(得分:5)
在Python 3中,dict.keys()
返回view object。从本质上讲,这只是一个直接进入字典键的窗口。例如,在哈希表上没有循环来构建新对象。这使得它成为一个恒定时间,即O(1),操作。
从here开始实现字典的查看对象;新视图对象的创建使用dictview_new
。这个函数所做的就是创建一个指向字典并增加引用计数的新对象(用于垃圾跟踪)。
在Python 2中,dict.keys()
返回一个列表对象。要创建这个新列表,Python必须遍历哈希表,将字典的键放入列表中。这是作为函数dict_keys
实现的。这里的时间复杂度与字典的大小成线性关系,即O(n),因为必须访问表中的每个槽。
N.B。 Python 2中的dict.viewkeys()
与Python 3中的dict.keys()
相同。