How to add or increment a dictionary entry?

前端 未结 6 858
时光取名叫无心
时光取名叫无心 2020-12-04 16:19

I\'m currently re-engaging with Python after a long absence and loving it. However, I find myself coming across a pattern over and over. I keep thinking that there must be a

6条回答
  •  醉话见心
    2020-12-04 16:47

    I did some time comparisons. Pretty much equal. The one-lined .get() command is fastest, though.

    Output:

    get 0.543551800627
    exception 0.587318710994
    haskey 0.598421703081
    

    Code:

    import timeit
    import random
    
    RANDLIST = [random.randint(0, 1000) for i in range(10000)]
    
    def get():
        foo = {}
        for bar in RANDLIST:
            foo[bar] = foo.get(bar, 0) + 1
    
    
    def exception():
        foo = {}
        for bar in RANDLIST:
            try:
                foo[bar] += 1
            except KeyError:
                foo[bar] = 1
    
    
    def haskey():
        foo = {}
        for bar in RANDLIST:
            if foo.has_key(bar):
                foo[bar] += 1
            else:
                foo[bar] = 1
    
    
    def main():
        print 'get', timeit.timeit('get()', 'from __main__ import get', number=100)
        print 'exception', timeit.timeit('exception()', 'from __main__ import exception', number=100)
        print 'haskey', timeit.timeit('haskey()', 'from __main__ import haskey', number=100)
    
    
    if __name__ == '__main__':
        main()
    

提交回复
热议问题