How does collections.defaultdict work?

前端 未结 15 2219
离开以前
离开以前 2020-11-22 12:50

I\'ve read the examples in python docs, but still can\'t figure out what this method means. Can somebody help? Here are two examples from the python docs

>         


        
15条回答
  •  一个人的身影
    2020-11-22 13:11

    The behavior of defaultdict can be easily mimicked using dict.setdefault instead of d[key] in every call.

    In other words, the code:

    from collections import defaultdict
    
    d = defaultdict(list)
    
    print(d['key'])                        # empty list []
    d['key'].append(1)                     # adding constant 1 to the list
    print(d['key'])                        # list containing the constant [1]
    

    is equivalent to:

    d = dict()
    
    print(d.setdefault('key', list()))     # empty list []
    d.setdefault('key', list()).append(1)  # adding constant 1 to the list
    print(d.setdefault('key', list()))     # list containing the constant [1]
    

    The only difference is that, using defaultdict, the list constructor is called only once, and using dict.setdefault the list constructor is called more often (but the code may be rewriten to avoid this, if really needed).

    Some may argue there is a performance consideration, but this topic is a minefield. This post shows there isn't a big performance gain in using defaultdict, for example.

    IMO, defaultdict is a collection that adds more confusion than benefits to the code. Useless for me, but others may think different.

提交回复
热议问题