<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_mult_iters(cls, name=None, idx=None, **kwargs):
 """Load values from multiple iters Parameters name : string, default None Name of the data set. If None (default), the name will be set to ``'table'``. idx: string, default None Iterable to use for the data index **kwargs : dict of iterables The ``values`` field will contain dictionaries with keys for each of the iterables provided. For example, d = Data.from_iters(idx='x', x=[0, 1, 5], y=(10, 20, 30)) would result in ``d`` having a ``values`` field with [{'idx': 0, 'col': 'y', 'val': 10}, {'idx': 1, 'col': 'y', 'val': 20} If the iterables are not the same length, then ValueError is raised. """

        if not name:
            name = 'table'

        lengths = [len(v) for v in kwargs.values()]

        if len(set(lengths)) != 1:
            raise ValueError('Iterables must all be same length')

        if not idx:
            raise ValueError('Must provide iter name index reference')

        index = kwargs.pop(idx)
        vega_vals = []
        for k, v in sorted(kwargs.items()):
            for idx, val in zip(index, v):
                value = {}
                value['idx'] = idx
                value['col'] = k
                value['val'] = val
                vega_vals.append(value)

        return cls(name, values=vega_vals)