Это возможно только с изменяемыми объектами, поэтому вы должны обернуть ваше неизменное значение в некоторый изменяемый объект. Фактически любой изменяемый объект будет делать, например, встроенный список:
>>> n = [0]
>>> d = { 1 : n, 2 : n }
>>> d
{1: [0], 2: [0]}
>>> d[1][0] = 3
>>> d
{1: [3], 2: [3]}
а что сложного в создании собственного класса или объекта?
>>> n = type( "number", ( object, ), { "val" : 0, "__repr__" : lambda self: str(self.val) } )()
>>> d = { 1 : n, 2 : n }
>>> d
{1: 0, 2: 0}
>>> d[1].val = 9
>>> d
{1: 9, 2: 9}
Работает так же хорошо;)