diff --git a/comfy/utils.py b/comfy/utils.py index a826e41bf..ed40e3f26 100644 --- a/comfy/utils.py +++ b/comfy/utils.py @@ -118,15 +118,15 @@ def state_dict_key_replace(state_dict, keys_to_replace): return state_dict def state_dict_prefix_replace(state_dict, replace_prefix, filter_keys=False): - if filter_keys: - out = {} - else: - out = state_dict - for rp in replace_prefix: - replace = list(map(lambda a: (a, "{}{}".format(replace_prefix[rp], a[len(rp):])), filter(lambda a: a.startswith(rp), state_dict.keys()))) - for x in replace: - w = state_dict.pop(x[0]) - out[x[1]] = w + out = {} if filter_keys else state_dict + + for old_prefix, new_prefix in replace_prefix.items(): + keys_to_replace = [key for key in state_dict if key.startswith(old_prefix)] + + for key in keys_to_replace: + new_key = new_prefix + key[len(old_prefix):] + out[new_key] = state_dict.pop(key) + return out