搜尋

首頁  >  問答  >  主體

Python遍历dict的key最高效的方法是什么?

昨天被人问起的,非常惭愧,写了两年Python还以为keys()就是最高效的遍历方法。

阿神阿神2784 天前746

全部回覆(2)我來回復

  • PHPz

    PHPz2017-04-17 14:32:50

    因為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的結果

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 14:32:50

    雷雷

    回覆
    0
  • 取消回覆