python中的字典的效率非常高,比列表的查找更高效,而且數據結構規模越大,差距越明顯。
我們看下面這個例子:
我們需要找到男孩列表和女孩列表裏首字母相同的配對。
首先我們看列表的情況:
import time
if __name__=="__main__":
girls = ['java','daodao','jingjing','tudou','dandan','baobao']
boys = ['yuanyuan','dada','jiji','chuichui','shuaige','baichi']
starttime = time.time()
print [b+'+'+g for b in boys for g in girls if b[0]==g[0]]
cost = time.time() - starttime
print cost
Result:
['dada+daodao', 'dada+dandan', 'jiji+java', 'jiji+jingjing', 'baichi+baobao']
3.09944152832e-05
我們再看看字典的情況:
import time
if __name__=="__main__":
girls = ['java','daodao','jingjing','tudou','dandan','baobao']
boys = ['yuanyuan','dada','jiji','chuichui','shuaige','baichi']
lettergirls = {}
for girl in girls:
lettergirls.setdefault(girl[0],[]).append(girl)
starttime = time.time()
print [b+'+'+g for b in boys for g in lettergirls.get(b[0],[])]
cost = time.time()-starttime
print cost
Result:
['dada+daodao', 'dada+dandan', 'jiji+java', 'jiji+jingjing', 'baichi+baobao']
2.47955322266e-05
輸出相同的結果,但是很明顯字典耗時更少,更高效。