如何将API返回的字典列表处理为按列聚合、人名作为键的目标结构
代码调整方案
核心逻辑说明
你当前的问题是遍历每个用户的每个字段时都创建了新字典,没有对同column的字典做合并。调整思路是先基于公共字段创建结果字典的骨架,再遍历填充所有用户的对应字段值,可自动适配新增用户的场景。
修正后代码
# 先提取排除name之外的公共字段作为转置列 columns = [key for key in data[0].keys() if key != "name"] # 初始化结果列表,提前为每个列创建对应字典 result = [] for idx, col_name in enumerate(columns): result.append({ "id": idx, "column": col_name }) # 遍历所有用户数据,填充对应字段 for user_info in data: user_name = user_info["name"] for col_idx, col_name in enumerate(columns): result[col_idx][user_name] = user_info[col_name]
效果验证
运行上述代码后,result变量的输出就是你需要的结构:
[ {id: 0, column: "age", bob: 22, zack: 43}, {id: 1, column: "gender", bob: male, zack: male} ]
如果后续API新增其他用户,代码会自动把新用户名作为key添加到每个列字典中,无需额外修改逻辑。
内容的提问来源于stack exchange,提问作者kdrumz
相关产品推荐
相关产品推荐

