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

Jas*_*son 19 python

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

use*_*ica 18

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

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

  • @Jason:`dict.keys()` 与 Python 3 中的 set 类似;如果不将其转换为列表或元组或其他内容,则无法从中提取随机元素。 (2认同)