.values()、.items()、.keys() 的时间和辅助空间复杂度

Time and Auxiliary Space Complexities of .values(), .items(), .keys()

提问人:LateGameLank 提问时间:11/2/2023 更新时间:11/2/2023 访问量:26

问:

我最近开始关注 Python 字典的复杂性。然而,当我开始更深入地思考数据结构时,我遇到了几个问题——我正在努力寻找明确的答案:

、 和 的时间和辅助空间复杂度是多少?我的印象是,由于它们是视图对象,因此它们既不需要额外的空间,也不需要额外的时间来检索。这样,它们几乎就像预设的(但动态的)属性一样。.values().items().keys()

假设我们有下面的函数,它接受一个输入字典:food

def foo(d):
    bar = d.values()

虽然这个函数的空间复杂度为 ,字典中的条目数在哪里,但这个函数的辅助空间复杂度是多少?换句话说,会占用额外的空间吗?如果是这样,则此函数的辅助空间将为 。如果不是,则辅助空间为 。O(N)Nd.values()O(N)O(1)

同样,这个函数的时间复杂度是 ,字典中的条目数在哪里,还是按时间运行?O(N)NO(1)

从本质上讲,我试图理解视图对象的机制。谢谢!

python 字典 时间复杂 big-o 空间复杂度

评论


答:

1赞 Kelly Bundy 11/2/2023 #1

它们都需要 O(1) 时间和空间。它们只返回一个内部引用字典的小视图对象,因此当您对视图对象执行某些操作时,视图对象会使用该字典来实际执行此操作。