code: def get_teams(self):
          if self._cache['teams']:
              return self._cache['teams']
          teams = []
          for j, player in enumerate(self._header.initial.players):
              added = False
              for i in range(0, len(self._header.initial.players)):
                  if player.attributes.my_diplomacy[i] == 'ally':
                      inner_team = False
                      outer_team = False
                      new_team = True
                      for t, tl in enumerate(teams):
                          if j in tl or i in tl:
                              new_team = False
                          if j in tl and i not in tl:
                              inner_team = t
                              break
                          if j not in tl and i in tl:
                              outer_team = t
                              break
                      if new_team:
                          teams.append([i, j])
                      if inner_team is not False:
                          teams[inner_team].append(i)
                      if outer_team is not False:
                          teams[outer_team].append(j)
                      added = True
              if not added and j != 0:
                  teams.append([j])
          self._cache['teams'] = teams
          return teams