如果我们想从一个集合构建一个列表,我们可以做
[k for k in set]
这是O(n)操作,同时:
dict.keys()
是O(1) 根据{{3}}
因此,据我所知,dict使用set作为其基础数据结构的关键,是list(set)
O(1)?这是如何实现的?
a = set(range(n))
s = list(a) # is this operation O(1)?
答案 0 :(得分:1)
嗯,不,不是真的。相反的方式是更接近的类比:在实现中,因此,据我所知,dict使用set作为其基础数据结构的关键。
set
就像一个dict
,其中包含所有空值。 dict
在Python中排在第一位,set
在Python 2.2(2000年7月)之前才出现 - 请参阅PEP 218。
另外值得一提的是,自Python 3以来dict.keys()
是O(1)。在Python 2中,它是O(n),你应该使用dict.viewkeys()
作为键“view”(类似集合的接口)
是
list(set)
O(1)?
不,它是O(n) - 与列表理解相同。
这是如何实现的?