class_docstr: Interface for simple dictionary-based dataset format. The dictionary
  keys correspond to the column (i.e. dimension) names and the values
  are collections representing the values in that column.
class_docstr_tok: ["Interface","for","simple","dictionary-based","dataset","format",".","The","dictionary","keys","correspond","to","the","column","(","i.e",".","dimension",")","names","and","the","values","are","collections","representing","the","values","in","that","column","."]
code: def concat(cls, datasets, dimensions, vdims):
      columns = defaultdict(list)
      for key, ds in datasets:
          for k, vals in ds.data.items():
              columns[k].append(np.atleast_1d(vals))
          for d, k in zip(dimensions, key):
              columns[d.name].append(np.full(len(ds), k))
  
      template = datasets[0][1]
      dims = dimensions + template.dimensions()
      return dict(
          [(d.name, np.concatenate(columns[d.name])) for d in dims]
      )
  
imports: from collections import OrderedDict, defaultdict
  import numpy
  from ..None import util
  from ..dimension import dimension_name
  from ..element import Element
  from ..ndmapping import NdMapping, item_check, sorted_context
  from ..util import isscalar
  from .interface import DataError, Interface
label_desc: Use image node_id 11 for calling the DictInterface obj's underlying member method code with example usage: obj.concat(cls, datasets, dimensions, vdims) and returns: dict