python dict 和 list 的速度问题

2016-12-29 13:40:08 +08:00
 yangmt92

初学 python 我不能理解 dict 为什么比 list 快

比如 list[5]是从头遍历 那么 dict['key']不是对 key 的遍历吗

3005 次点击
所在节点    问与答
10 条回复
polo2222
2016-12-29 13:50:14 +08:00
dict['key']不是对 key 的遍历。

python dict 的实现使用了 hash 表, access 的复杂度是 O(1)。
justfly
2016-12-29 14:03:45 +08:00
list[5] 也不是遍历 也是 O(1)
justfly
2016-12-29 14:05:02 +08:00
ps 只有链表随机读才需要从头遍历
BOYPT
2016-12-29 14:05:28 +08:00
先问是不是,再问为什么系列
kfll
2016-12-29 14:08:58 +08:00
楼主理解的不对,是查询表上, dict 会比 list 快,你可以类比一下数据库有索引和没有索引的情况。

https://wiki.python.org/moin/TimeComplexity

应该比较 list 的 x in s 和 set 的 x in s 或者 dict 的 Get Item
yangmt92
2016-12-29 14:18:48 +08:00
@kfll 对,我是这个意思。刚刚看了一下哈希初步明白了。 dict 的 x in s 是 position = f(key),O(1)。 list 的 x in s ,O(N)
jugelizi
2016-12-29 14:21:19 +08:00
dict 就是查字典的意思嘛,你按索引查字典和一页一翻你说哪个快
yangmt92
2016-12-29 14:23:55 +08:00
@polo2222 多谢提醒哈希
yangmt92
2016-12-29 14:30:52 +08:00
@jugelizi 又有一点迷惑了,到底是一个 f(x)生成,还是索引,字典索引相当根据特征于分类查询
yangmt92
2016-12-29 14:32:56 +08:00
@jugelizi 不过还是快,可能我需要了解一下 dict 或者哈希实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/330990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX