Of course your solution works, but it is agnostic to the model’s hyperparameters, and so for each model you will have to rework the code.
Moreover your code becomes very long (and therefore difficult to implement) if the values of these hyperparameters become very large (which is generally the case in practice)
I think this function is enough (Instead of select the parameters name by yourself…)
def get_state_dic(model1, model2, pattern) :
	state_dict = {}
	for item1, item2 in zip(model1.state_dict().items(), model2.state_dict().items()) :
	    key = item1[0] # = item2[0] 
	    if key.startswith(pattern) : # or another condition ...
	        state_dict[key] = item1[1] # take one of model1
	    else :
	        state_dict[key] = item2[1] # take one of model2
	return stat_dict