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

将Pandas处理的JSON输出到dcc.Store时类型错误如何解决?

报错核心原因

  1. 你在定义回调时将单个Output放在了列表中,此时回调函数的返回值必须是和Output列表长度一致的列表/元组,你当前直接返回单个字符串,结构不匹配。
  2. dcc.Store的data属性原生支持Python字典、列表等可序列化结构,Dash会自动完成JSON序列化,无需手动调用json.dumps转字符串,手动转字符串反而会导致后续取数时需要额外反序列化。

最优修改方案(推荐)

直接移除Output外层多余的列表,直接返回字典即可,修改后代码如下:

@app.callback(
    # 单个输出不需要放在列表中
    Output('intermediate-value', 'data'),
    [
        Input("keyword-selection", "value"),
        Input("status-selection", "value")
    ]
)
def color_map(keyword_selected, status_selected):
    local_df = df_xy_coord[df_xy_coord["active"] == status_selected].copy() if status_selected != "All" else df_xy_coord

    color_index = 0
    for keyword in keyword_selected:
        local_df.loc[local_df["keyword"] == keyword, 'color'] = colors[color_index]
        color_index += 1

    color_dictionary = dict( zip( local_df.keyword, local_df.color ) )
    # 直接返回字典,Dash自动完成序列化
    return color_dictionary

保留原有Output结构的修改方案

如果你不想修改Output的列表写法,只需要将返回值用列表/元组包裹即可:

# 替换原来的return语句即可
return [color_dictionary]
# 或者用元组格式
return (color_dictionary,)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:02