You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dash中dcc.Dropdown传值报长度不匹配ValueError如何解决

问题原因

报错ValueError: ('Lengths must match to compare', (120,), (1,))由配置不匹配导致:

  • dcc.Dropdown设置了multi=False(单选模式),但初始value传入的是列表['01/01/2022'],不符合单选模式的传值要求
  • 后续回调中做数据筛选时,拿长度为120的Date列和长度为1的列表做等值比较,维度不匹配直接触发报错
修复步骤
  1. 修正下拉框的初始值配置
    单选模式下value直接传入目标字符串即可,不要用列表包裹,修正后的组件代码如下:
    date_category = list(df['Date'].unique())
    
    app.layout = dbc.Container([
        dbc.Row([
            dcc.Dropdown(
                id='date_drdn', 
                multi=False, 
                value='01/01/2022', # 单选直接传单个值,去掉外层方括号
                options=[{'label':x, 'value':x} for x in date_category]
            )
        ])
    ])
    
  2. 匹配对应的数据筛选逻辑
    单选模式下回调拿到的下拉框返回值是单个字符串,直接做等值筛选即可,示例回调代码:
    @app.callback(
        Output('your_chart_id', 'figure'), # 替换成你实际的图表组件ID
        Input('date_drdn', 'value')
    )
    def render_chart(selected_date):
        # 单选场景直接等值匹配筛选
        filtered_data = df[df['Date'] == selected_date]
        # 补充你的绘图逻辑,例如用plotly.express生成图表
        # fig = px.line(filtered_data, x='x_col', y='y_col')
        return fig
    

注意:如果后续需要开启多选模式,再将multi参数改为True,此时value需要传列表,筛选数据时改用df[df['Date'].isin(selected_date)]即可,不要混用单选、多选的传值和筛选逻辑。

内容的提问来源于stack exchange,提问作者beginofwork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:18:17