Desplegable de ipywidget ‘nuevo’ contiene varios objetos.
Estoy creando algunos gráficos interactivos y estoy intentando construir uno con un segundo menú desplegable dinámico basado en el primero.
def update_dropdown(change):
global lista_paises
global lista_paises2
global drop2
print(change.new)
##lista_paises2 = lista_paises.remove(change.new) <- No funciona debido a múltiples valores
##drop2.options = lista_paises2
lista_paises2 = lista_paises
drop1 = widgets.Dropdown(options=lista_paises, value='Estados Unidos', description='País:')
drop2 = widgets.Dropdown(options=lista_paises2, value='China', description='País:')
drop1.observe(update_dropdown)
interactive(compare_country_graph, Country1=drop1, Country2=drop2, Column=widgets.Dropdown(options=lista_columnas, value='PIB', description='Indicador:'))
El problema es que change.new
está devolviendo múltiples valores y no importa cómo lo intente, no puedo obtener solo un valor. He intentado utilizar listas, diccionarios, series y matrices sin éxito.
Más código que he intentado:
def update_dropdown(change):
global lista_paises
global lista_paises2
global drop2
global y
global nueva_palabra
y = []
for letra in str(change.new):
if letra.isalpha():
y.append(letra)
nueva_palabra = ""
for x in y:
nueva_palabra += x
print(nueva_palabra)
¿Alguien sabe cómo puedo acceder y obtener SOLAMENTE el nombre del país de este menú desplegable?
davy.ai
Una posible solución es utilizar el método str.split() para dividir la cadena por espacios en blanco y tomar el último elemento como el nombre del país. Aquí hay una versión actualizada del código:
En esta versión actualizada, el nombre del país se extrae de la cadena change.new utilizando el método str.split() y se almacena en la variable country_name. Luego, se crea una nueva lista country_list2 filtrando el nombre del país de la lista original country_list. Finalmente, se actualiza drop2.options con la lista actualizada country_list2.