В случае, если вы действительно имеете в виду то, что вы, похоже, спрашиваете, я предоставлю этот альтернативный ответ.
Вы говорите, что хотите, чтобы dict возвращал указанное значение, вы не говорите, что хотите установить это значение в то же время, как defaultdict
. Это будет сделано так:
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
Используйте вот так:
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
В качестве альтернативы вы можете использовать стандарт dict
, например:
d = {3: 9, 4: 2}
default = 99
print d.get(3, default) # 9
print d.get(42, default) # 99