import copy


def create_full_dict(param, name_list, fixed_list=["adjust_element2", "adjust_element3"]):
    """
    Create full param dict so each item has the same nested dict.
    This is for GUI purpose only.

    Pamameters
    ----------
    param : dict
        all parameters including element
    name_list : list
        strategy names

    Returns
    -------
    dict: with update
    """
    param_new = copy.deepcopy(param)
    for n in name_list:
        for k, v in param_new.items():
            if k == "non_fitting_values":
                continue
            if n not in v:
                # enforce newly created parameter to be fixed
                # for strategy in fixed_list
                if n in fixed_list:
                    v.update({n: "fixed"})
                else:
                    v.update({n: v["bound_type"]})
    return param_new