Поскольку вы обновляете только один из ключей словаря, значения обоих ключей указывают на один и тот же объект:
id(dummy_dict['a'])
# 1752793882440
id(dummy_dict['b'])
# 1752793882440
, следовательно, все изменения этого изменяемого объекта будут отражено в других ссылках на него.
Вот фиктивный пример, где вы можете видеть, что изменение одного из внутренних списков списка не создает новый объект, так как списки, как упоминалось, mutable
a = [[1,2,3], [0]]
id(a)
# 1752794665032
a[1] = [2]
id(a)
# 752794665032
Решение
Вместо этого установите значения словаря с копиями списка (полный фрагмент копирует содержимое списка )
dummy_dict = {k:lst[:] for k in ['a', 'b']}
dummy_dict['a'][0] = x_dummy
print(dummy_dict)
# {'a': [[1, 2, 3], [0]], 'b': [[0], [0]]}