Python 列表索引(值)执行什么样的查找?

Python 列表索引(值)执行什么样的查找?,python,list,dictionary,hashtable,cpython,Python,List,Dictionary,Hashtable,Cpython,当我调用时,python在幕后做什么: very_big_list.index(value) 在字符串列表上 它是否比这种等效的字典查找更有效 d = {'hello':1, 'dog':2, 'cat':3, ...} print d['dog'] .index()在列表中循环,直到找到一个相等的元素(element==searchterm为True)。查字典效率更高 在CS术语中,.index()的复杂性为O(n),dict查找为O(1)。请参阅Python Wiki上的。@luke14

当我调用时,python在幕后做什么:

very_big_list.index(value)
在字符串列表上

它是否比这种等效的字典查找更有效

d = {'hello':1, 'dog':2, 'cat':3, ...}
print d['dog']
.index()
在列表中循环,直到找到一个相等的元素(
element==searchterm
为True)。查字典效率更高


在CS术语中,
.index()
的复杂性为O(n),dict查找为O(1)。请参阅Python Wiki上的。

@luke14free:列表比dict更紧凑。Python dict使用开放寻址。是的,我的问题是内存(列表很大)和计算时间。可能如果dicts因为内存问题而无法使用,我可以尝试切换到cython并使用有序列表,在这些列表上,使用二分法查找时间应该下降到log(n);在这种情况下,请使用不同的数据结构。也许一棵树或一棵二叉树(很容易自己构建)更合适;取决于您的具体使用情况。如果在keys@luke14free:但请注意,
dict
list
结构只需要保存指针。它们本身并不大。因此,即使是一个容纳一百万个项目的
dict
本身也不是一个内存占用器。