<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def weld_groupby_aggregate_dictmerger(arrays, weld_types, by_indices, operation):
 """Groups by the columns in by. Parameters arrays : list of (numpy.ndarray or WeldObject) Entire DataFrame data. weld_types : list of WeldType Corresponding to data. by_indices : list of int Indices of which arrays to group by. operation : {'+', '*', 'min', 'max'} Aggregation. Returns ------- WeldObject Representation of the computation. """

    weld_struct = weld_arrays_to_vec_of_struct(arrays, weld_types)

    obj_id, weld_obj = create_weld_object(weld_struct)

    all_indices = list(range(len(arrays)))
    column_indices = list(filter(lambda x: x not in by_indices, all_indices))
    by_weld_types = [weld_types[i] for i in by_indices]
    column_weld_types = [weld_types[i] for i in column_indices]

    by_types = struct_of('{e}', by_weld_types)
    column_types = struct_of('{e}', column_weld_types)
    all_types = struct_of('{e}', weld_types)
    by_select = struct_of('e.${e}', by_indices)
    column_select = struct_of('e.${e}', column_indices)
    res = '{{{}}}'.format(', '.join(['e.$0.${}'.format(i) for i in range(len(by_weld_types))] +
                                    ['e.$1.${}'.format(i) for i in range(len(column_weld_types))]))

    weld_template = """map(
    tovec(
        result(
            for(
                {arrays},
                dictmerger[{by_types}, {column_types}, {operation}],
                |b: dictmerger[{by_types}, {column_types}, {operation}], i: i64, e: {all_types}|
                    merge(b, {{{by_select}, {column_select}}})
            )
        )
    ),
    |e: {{{by_types}, {column_types}}}|
        {res}
)"""

    weld_obj.weld_code = weld_template.format(arrays=obj_id,
                                              by_types=by_types,
                                              column_types=column_types,
                                              all_types=all_types,
                                              by_select=by_select,
                                              column_select=column_select,
                                              operation=operation,
                                              res=res)

    return by_weld_types + column_weld_types, weld_obj