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的结果
for key in _dict: pass
因为keys()须要形成一个列表,构建一个列表对于一个大的dict开销是很大的。lihsing说的是对的,同时还有另外一种写法是iterkeys(),速度差别不大。
见测试代码
输出
54.1994677764
30.2660675759
31.3075812315
是windows + python 2.7的结果