How to set default value to all keys of a dict object in python?

后端 未结 7 851
星月不相逢
星月不相逢 2020-12-02 12:24

I know you can use setdefault(key, value) to set default value for a given key, but is there a way to set default values of all keys to some value after creating a dict ?

7条回答
  •  青春惊慌失措
    2020-12-02 12:33

    In case you actually mean what you seem to ask, I'll provide this alternative answer.

    You say you want the dict to return a specified value, you do not say you want to set that value at the same time, like defaultdict does. This will do so:

    class DictWithDefault(dict):
        def __init__(self, default, **kwargs):
            self.default = default
            super(DictWithDefault, self).__init__(**kwargs)
    
        def __getitem__(self, key):
            if key in self:
                return super(DictWithDefault, self).__getitem__(key)
            return self.default
    

    Use like this:

    d = DictWIthDefault(99, x=5, y=3)
    print d["x"]   # 5
    print d[42]    # 99
    42 in d        # False
    d[42] = 3
    42 in d        # True
    

    Alternatively, you can use a standard dict like this:

    d = {3: 9, 4: 2}
    default = 99
    print d.get(3, default)  # 9
    print d.get(42, default) # 99
    

提交回复
热议问题