84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
昨天被人问起的,非常惭愧,写了两年Python还以为keys()就是最高效的遍历方法。
keys()
闭关修行中......
因為keys()必須要形成一個列表,建構一個列表對於一個大的dict開銷是很大的。 lihsing說的是對的,同時還有另一種寫法是iterkeys(),速度差異不大。 見測試程式碼
import timeit DICT_SIZE = 100*10000 testDict = dict() for i in range(DICT_SIZE): testDict[i] = i # 构建大小为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的結果
雷雷
因為keys()必須要形成一個列表,建構一個列表對於一個大的dict開銷是很大的。 lihsing說的是對的,同時還有另一種寫法是iterkeys(),速度差異不大。
見測試程式碼
輸出
54.1994677764
30.2660675759
31.3075812315
是windows + python 2.7的結果
雷雷