ホームページ  >  に質問  >  本文

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

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

阿神阿神2765日前729

全員に返信(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

    for key in _dict:
        pass
    

    返事
    0
  • キャンセル返事