【问题标题】:Is finding a key in a dictionary takes the same time as finding an item in a list在字典中查找键与在列表中查找项所用的时间相同
【发布时间】: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


【解决方案1】:

字典更快,因为键是散列的。见这里:https://wiki.python.org/moin/TimeComplexity

【讨论】:

  • 补充@leo 所说的,在这两种情况下似乎都需要相当长的时间的原因是因为您在创建时检查了两者。首先分别创建字典和列表,然后检查执行它们所花费的时间。
  • 同意。我的回答仅指查找
猜你喜欢
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2017-03-11
相关资源
最近更新 更多