【发布时间】:2020-09-29 16:48:39
【问题描述】:
我有一个带有1,000,000 键的字典,我想检查字典中是否存在某个键。
我还可以在包含所有这些键的列表中包含 1,000,000 项目。
哪种方式更快?为什么?
例如:
999999 in {x:x for x in range(1000000)}
对
999999 in [x for x in range(1000000)]
【问题讨论】:
-
不,根据定义。字典查找是 O(1)(忽略哈希冲突),列表查找是 O(N) wiki.python.org/moin/TimeComplexity
-
如果你使用的是jupyter notebook,你可以使用%%timeit自行查找。
-
您似乎在比较创建集合的时间和搜索它们的时间。那是你的意图吗? 创建列表更快,但搜索字典更快。
-
@MarkMeyer 实际上它看起来不像 OP 计时任何东西,他们只是在 SO 上扔了一些代码(他们问哪个更快。如果他们自己计时,他们就会知道答案)
-
“哪种方法更快”您测试过吗? “以及为什么”您尝试将
dict vs list lookup performance放入搜索引擎?
标签: python list performance dictionary big-o