Python中dict.keys()的时间复杂度是多少?

时间:2016-08-30 05:01:33

标签: python

我在解决this LeetCode problem时遇到了一个问题。虽然我的解决方案已被系统接受,但在网上搜索以下问题后我仍然不知道: What is the time complexity of dict.keys() operation?它是否返回键的视图或键的真实列表(存储在内存中)?

1 个答案:

答案 0 :(得分:13)

在Python 2中,它是O(n),它构建了一个新列表。在Python 3中,它是O(1),但它没有返回列表。要从字典keys中绘制随机元素,您需要将其转换为列表。

听起来你可能正在使用random.choice(d.keys())来解决该问题的第3部分。如果是这样,那就是O(n),你弄错了。您需要实现自己的哈希表或维护单独的元素列表,而不会牺牲平均情况下的O(1)插入和删除。