<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update_columns(self, field, value_dict, inds=None, computed_type=None):
 """ update the columns of all meshes :parameter str field: name of the mesh columnname :parameter value_dict: dictionary with component as keys and new data as values. If value_dict is not a dictionary, it will be applied to all components :type value_dict: dict or value (array or float) """

        if not isinstance(value_dict, dict):
            value_dict = {comp_no: value_dict for comp_no in self._dict.keys()}


        for comp, value in value_dict.items():
            if computed_type is not None:
                # then create the ComputedColumn now to override the default value of compute_at_vertices
                self._dict[comp]._observables[field] = ComputedColumn(self._dict[comp], compute_at_vertices=computed_type=='vertices')

            #print "***", comp, field, inds, value
            if inds:
                raise NotImplementedError('setting column with indices not yet ported to new meshing')
                # self._dict[comp][field][inds] = value
            else:
                if comp in self._dict.keys():
                    self._dict[comp][field] = value
                else:
                    meshes = self._dict[self._parent_envelope_of[comp]]
                    meshes[comp][field] = value