Reconstructs the StructureEnvironments object from a dict representation of the StructureEnvironments created
        using the as_dict method.
        :param d: dict representation of the StructureEnvironments object
        :return: StructureEnvironments object

def from_dict(cls, d):
        """
        Reconstructs the StructureEnvironments object from a dict representation of the StructureEnvironments created
        using the as_dict method.
        :param d: dict representation of the StructureEnvironments object
        :return: StructureEnvironments object
        """
        ce_list = [None if (ce_dict == 'None' or ce_dict is None) else {
            int(cn): [None if (ced is None or ced == 'None') else
                      ChemicalEnvironments.from_dict(ced) for ced in ce_dict[cn]]
            for cn in ce_dict} for ce_dict in d['ce_list']]
        voronoi = DetailedVoronoiContainer.from_dict(d['voronoi'])
        structure = Structure.from_dict(d['structure'])
        neighbors_sets = [{int(cn): [cls.NeighborsSet.from_dict(dd=nb_set_dict,
                                                                structure=structure,
                                                                detailed_voronoi=voronoi)
                                     for nb_set_dict in nb_sets]
                           for cn, nb_sets in site_nbs_sets_dict.items()}
                          if site_nbs_sets_dict is not None else None
                          for site_nbs_sets_dict in d['neighbors_sets']]
        info = {key: val for key, val in d['info'].items() if key not in ['sites_info']}
        if 'sites_info' in d['info']:
            info['sites_info'] = [{'nb_sets_info': {int(cn): {int(inb_set): nb_set_info
                                                              for inb_set, nb_set_info in cn_sets.items()}
                                                    for cn, cn_sets in site_info['nb_sets_info'].items()},
                                   'time': site_info['time']} if 'nb_sets_info' in site_info else {}
                                  for site_info in d['info']['sites_info']]
        return cls(voronoi=voronoi, valences=d['valences'],
                   sites_map=d['sites_map'],
                   equivalent_sites=[[PeriodicSite.from_dict(psd) for psd in psl] for psl in d['equivalent_sites']],
                   ce_list=ce_list, structure=structure,
                   neighbors_sets=neighbors_sets,
                   info=info)