Несколько выпадающих списков в Plotly Dash
Хотел бы создать несколько выпадающих списков в соответствии со структурой, задаваемой filter_options:
from dash import Dash, dcc, html, Input, Output,callback
filter_options = {
'причины': ['возврат/зачет', 'вычеты', 'документы'],
'последствия': ['документы', 'МНК'],
'Классификация НО действий НП': ['взаимозависимые организации', 'дробление бизнеса']
}
def make_label_value(filter_options):
label_value = []
for k in range(len(list(filter_options.keys()))):
a_list = []
for x in range(len(filter_options[list(filter_options.keys())[k]])):
a = [{f"label_{k}": f'{list(filter_options.keys())[k]}_{x}', f"value_{k}": key} for key in filter_options[list(filter_options.keys())[k]]][x]
a_list.append(a)
label_value.append(a_list)
return label_value
label_value_lists = make_label_value(filter_options)
app = Dash(__name__)
for l in range(len(label_value_lists)):
app.layout = html.Div([
dcc.Dropdown(label_value_lists[l],
id=f'demo-dropdown-{l}',
placeholder=f"{list(filter_options.keys())[l]}",
multi=True,
),
html.Div(id=f'dd-output-container-{l}')
])
for s in range(len(label_value_lists)):
app.callback(
Output(f'dd-output-container-{s}', 'children'),
Input(f'demo-dropdown-{s}', f'value'))#, f'label_{s}'))
def update_output(value, label):
return f'You have selected {value}'
if __name__ == '__main__':
app.run_server(debug=True)
Хотя, как мне кажется, структура callback'ов правильная:
В общем, был бы очень признателен, если укажете на ошибку.
Источник: Stack Overflow на русском