注:
以下的“索引”和“查询”,对于列表[1,2,3,4,5],是指像这样的过程:
a=l[0]
而不是这样:
l.index(3)。
代码:
# !coding=utf-8
def listIndex(l,num):
for i in range(1000000):
a=l[num]
def dicIndex(d,st):
for i in range(1000000):
a=d[st]
l=[1,2,3,4,5]
d={'a':1,'b':2,'c':3,'d':4,'e':5}
a='e'
b=3
import time
t0=time.time()
for i in range(10):
dicIndex(d,a)
t1=time.time()
for i in range(10):
listIndex(l,b)
t2=time.time()
print('list列表进行索引',t2-t1)
print('dict字典进行索引',t1-t0)
测试结果:
使用python3.5进行分析时:
list列表进行索引 0.4718611240386963
dict字典进行索引 0.45757484436035156
重复多次试验依旧如此。
使用pypy3时:
list列表进行索引 0.01237797737121582
dict字典进行索引 0.1395554542541504
结论
可以看出,对于普通Python解释器,字典的查询效率要略微比列表高一些。
使用pypy时二者相比python解释器都有提速,且列表查询的效率远远甩了dict一大截(当然可能是针对重复查询一个值的情况做过优化吧。因此或许可以考虑用一下pypy……)