<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def DEFAULT_RENAMER(L, Names=None):
 """ Renames overlapping column names of numpy ndarrays with structured dtypes Rename the columns by using a simple convention: * If `L` is a list, it will append the number in the list to the key associated with the array. * If `L` is a dictionary, the algorithm will append the string representation of the key associated with an array to the overlapping columns from that array. Default renamer function used by :func:`tabular.spreadsheet.join` **Parameters** **L** : list or dictionary Numpy recarrays with columns to be renamed. **Returns** **D** : dictionary of dictionaries Dictionary mapping each input numpy recarray to a dictionary mapping each original column name to its new name following the convention above. """

    if isinstance(L,dict):
        Names = L.keys()
        LL = L.values()
    else:
        if Names == None:
            Names = range(len(L))
        else:
            assert len(Names) == len(L)
        LL = L

    commons = Commons([l.dtype.names for l in LL])

    D = {}
    for (i,l) in zip(Names, LL):
        d = {}
        for c in commons:
            if c in l.dtype.names:
                d[c] = c + '_' + str(i)
        if d:
            D[i] = d

    return D