昨天被人問起的,非常慚愧,寫了兩年P(guān)ython還以為keys()就是最高效的遍歷方法。
2 回答

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)閗eys()須要形成一個(gè)列表,構(gòu)建一個(gè)列表對(duì)于一個(gè)大的dict開銷是很大的。lihsing說的是對(duì)的,同時(shí)還有另外一種寫法是iterkeys(),速度差別不大。
見測試代碼
import timeit
DICT_SIZE = 100*10000
testDict = dict()
for i in range(DICT_SIZE):
testDict[i] = i # 構(gòu)建大小為100W的字典
assert len(testDict) == DICT_SIZE
def test1():
for _ in testDict.keys():
pass
def test2():
for _ in testDict:
pass
def test3():
for _ in testDict.iterkeys():
pass
# 分別測試2K次
print timeit.timeit("test1()", setup="from __main__ import test1", number=2000)
print timeit.timeit("test2()", setup="from __main__ import test2", number=2000)
print timeit.timeit("test3()", setup="from __main__ import test3", number=2000)
輸出
54.1994677764
30.2660675759
31.3075812315
是windows + python 2.7的結(jié)果
添加回答
舉報(bào)
0/150
提交
取消