python神奇的口袋——字典(二)

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

輸出相同的結果,但是很明顯字典耗時更少,更高效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章