FastAPI返回数据无自定义键:如何将id设为字典键?
解决方案
要实现将id字段作为键返回数据,你可以通过两种方式处理:
方法一:利用Pandas内置方法直接转换
先将id列设为DataFrame的索引,再使用orient="index"参数生成以索引为键的字典结构:
# 把id设为索引,同时从原数据中移除id列(drop=True) formatted_data = df.set_index('id', drop=True).to_dict(orient="index") return DataResponse(df=formatted_data)
返回的结构示例:
{ "2023-01-01_0_GB": {"date": "2023-01-01", "product": "Snickers"}, "2023-01-02_0_GB": {"date": "2023-01-02", "product": "Bounty"}, "2023-01-03_0_GB": {"date": "2023-01-03", "product": "Twix"}, ... }
如果需要在值中保留id字段,只需将drop=True改为drop=False即可。
方法二:手动构建目标字典
如果需要更灵活的控制,可以先生成records格式的列表,再通过字典推导式重构结构:
# 先获取原records列表 records = df.to_dict(orient="records") # 以每个item的id为键,item本身为值(保留id字段) formatted_data = {item['id']: item for item in records} # 若不需要值里保留id,用pop移除该字段 # formatted_data = {item.pop('id'): item for item in records} return DataResponse(df=formatted_data)
这两种方式都能替代原orient="records"生成的列表结构,直接返回以id为键的字典给前端。
内容的提问来源于stack exchange,提问作者Denver Dang
相关产品推荐
相关产品推荐

