code: def DEFAULT_RENAMER(L, Names=None):
      
      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
docs: 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.