code: def connected_site_pairs( self ):
          
          site_connections = {}
          for initial_site in self.sites:
              if not initial_site.label in site_connections:
                  site_connections[ initial_site.label ] = []
              for final_site in initial_site.p_neighbours:
                  if final_site.label not in site_connections[ initial_site.label ]:
                      site_connections[ initial_site.label ].append( final_site.label )
          return site_connections
docs: Returns a dictionary of all connections between pair of sites (by site label).
          e.g. for a linear lattice A-B-C will return::
          
              { 'A' : [ 'B' ], 'B' : [ 'A', 'C' ], 'C' : [ 'B' ] }
  
          Args:
              None
  
          Returns:
              site_connections (Dict{Str List[Str]}): A dictionary of neighbouring site types in the lattice.