<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_symbol_dict(self, voigt=True, zero_index=False, **kwargs):
 """ Creates a summary dict for tensor with associated symbol Args: voigt (bool):
 whether to get symbol dict for voigt notation tensor, as opposed to full notation, defaults to true zero_index (bool):
 whether to set initial index to zero, defaults to false, since tensor notations tend to use one-indexing, rather than zero indexing like python **kwargs: keyword args for np.isclose. Can take atol and rtol for absolute and relative tolerance, e. g. or Returns: list of index groups where tensor values are equivalent to within tolerances Returns: """

        d = {}
        if voigt:
            array = self.voigt
        else:
            array = self
        grouped = self.get_grouped_indices(voigt=voigt, **kwargs)
        if zero_index:
            p = 0
        else:
            p = 1
        for indices in grouped:
            sym_string = self.symbol + '_'
            sym_string += ''.join([str(i + p) for i in indices[0]])
            value = array[indices[0]]
            if not np.isclose(value, 0):
                d[sym_string] = array[indices[0]]
        return d