I need a dictionary that is automatically filled with a default value for each accessed key that is missing. I've found `defaultdict` and some other ways to achieve this, but the problem in my case is that I want the default value for each key to be specific to the key itself.

For example, with `defaultdict` I can achieve something like this:

```py
from collections import defaultdict
d = defaultdict(lambda: 5)
> d[1] = 3
> d[1]
> 3
> d[2]
> 5

```

But what if I need the default value for each accessed missing key to be for example `key + 5`? Something like:

```py
from collections import defaultdict
d = defaultdict(lambda key: key + 5)  # <-- This does not work as defaultdict expects lambda function to be without any parameters
> d[1] = 3
> d[1]
> 3
> d[2]
> 7         <- Calculated from accessed key + 5 (2+5)
> d[5]
> 10        <- Calculated from accessed key + 5 (5+5)

```

Is there a clean, builtin way to achieve what I need? I know that I can create a subclass of dict and implement this specific functionality at `__getitem__` level, but I want to avoid that if possible.

I couldn't find a solution in other answers, so sorry if it is still a duplicate.