Thanks @ptrblck !
Yes, as you said, the problem was manipulating the values in place. Manipulating the dictionaries as regular python values is much easier.
Another solution (in case .copy_ and .data are needed) would be by deep-copying the dictionary so the values are not linked internally when iterating in the loop.
import copy

[...]
dict_params = copy.deepcopy(dict(params2))
[...]