Práctica POO

Hola necesito ayuda con una práctica de la universidad. El ejercicio consiste en crear un elemento con atributos y subelementos con sus propios atributos. He decidido hacerlo sobre la liga ACB.Tengo la clase de Equipos y la clase Jugadores. El programa tiene que añadir, eliminar y modificar equipos, incluyendo a sus jugadores. No sé cómo hacer para que los jugadores estén dentro de cada equipo y cada equipo se me guarde con todos sus atributos. Se supone que se tiene que guardar en un mapa o eso dijo el profe pero no se como hacerlo. Adjunto lo que tengo de programa, si alguien me pudiera ayudar lo agradecería :sweat:

class Equipo: # Clase de los equipos

equipos = []

def __init__(self, name, ciudad, colores):
    self.name = name
    self.ciudad = ciudad
    self.colores = colores
    self.jugadores = []

def __str__(self):
    return "Nombre: {0}\nCiudad: {1}\nColores: {2}\nJugadores: {3}\n".format(self.name, self.ciudad,
                                                                             self.colores, self.jugadores)

def __del__(self):
    return "El siguiente equipo ya no existe: ".format(self.name)

def __new__(cls, *args, **kwargs):
    pass

def __cmp__(self, other):
    pass

def existe_equipo(self):
    nombre = input("Introduzca el nombre del equipo:")
    if self.name == nombre:
        return True
    else:
        return False

class Jugador(): # Clase de los jugadores
def init(self, nombre, edad, altura, dorsal, posicion):
self.nombre = nombre
self.edad = edad
self.altura = altura
self.dorsal = dorsal
self.posicion = posicion

def __str__(self):
    return "Nombre: {0}\nEdad: {1}\nAltura: {2}\nDorsal: {3}\nPosición: {4}\n".format(self.nombre, self.edad,
                                                                                      self.altura, self.dorsal,
                                                                                      self.posicion)

def __del__(self):
    return "El siguiente jugador ya no pertenece al equipo: ".format(self.nombre)

def existe_jugador(self):
    nombre = input("Introduzca el nombre del jugador:")
    if self.nombre == nombre:
        return True
    else:
        return False

def nuevo_jugador():
n = input("Nombre del jugador: ")
e = input("Edad: ")
h = input("Altura: ")
d = input("Dorsal: ")
p = input("Posición: ")
return Jugador(n, e, h, d, p)

def nuevo_equipo(): # Añadir un nuevo equipo
n = input("Nombre del equipo: ")
c = input("Ciudad residente: ")
co = input("Colores del equipo: ")
e = Equipo(n, c, co)
print("Estos son los datos de su equipo: ", e)
print("Jugadores de ", e.name, “: \n”
“Opciones:\n”
“1: Introducir un jugador\n”
“2: Borrar un jugador\n”
“3: Consultar un jugador\n”
“4: Actualizar un jugador\n”
“5: Mostrar todos los jugadores\n”
“6: Jugadores listos”)
opcion = int(input("Introduzca una opción: "))
while opcion != 6:

    if opcion in range(1, 6):

        if opcion == 1:
            nuevo_jugador()

        elif opcion == 2:
            nombre = input("Introduzca el nombre del jugador que desea eliminar: ")
            del(nombre)

        elif opcion == 3:
            jugador = input("Introduzca el nombre del jugador que desea consultar: ")
            str(jugador)

        elif opcion == 4:
            jugador = input("Introduzca el nombre del jugador que desea actualizar: ")
            str(jugador)
            jugador.nombre = input("Nombre actualizado: ")
            jugador.edad = input("Edad actualizada: ")
            jugador.altura = input("Altura actualizada: ")
            jugador.dorsal = input("Dorsal actualizado: ")
            jugador.posicion = input("Posición actualizada: ")
            str(jugador)

        elif opcion == 5:
            print("Jugadores:")

    else:
        opcion = int(input("La opción debe estar entre 1 y 6: "))

def opciones(): # Menu
print(“LIGA ACB DE BALONCESTO”)
print(“1: Introduce un equipo\n”
“2: Borrar un equipo\n”
“3: Consultar un equipo\n”
“4: Actualizar un equipo\n”
“5: Mostrar todos los equipos\n”
“6: Finalizar programa”)
opcion = int(input("Introduzca una opción: "))
while opcion < 1 or opcion > 6:
opcion = int(input("Escoja una opción entre 1 y 6: "))
return opcion

¿Ya lo lograste resolver?
Un mapa es un tipo de objeto que guarda claves y valores manteniendo una relacion 1 a 1 entre la clave y el valor (“mapea” entre clave y valor). En Python eso se logra con un diccionario.
Los valores de un diccionario pueden ser cualquier cosa. En tu caso particular puede ser una lista de objetos de la clase jugador.
En el caso de las claves tiene que ser cualquier objeto “hasheable”: un string, una tupla, un entero, etc.
En tu caso podrias armar una lista de jugadores (yo la armaria en un archivo de texto y luego la leeria con el programa para no tener que estar ingresando uno por uno los jugadores cada vez que quiera probar) como valor del diccionario, y las claves serian los strings con los nombres de los clubes.
Dime si eso es mas o menos lo que pretende.