Dictionary数据无法正确追加至另一Dictionary的技术求助
解决Dictionary无法正确追加分组后Pandas数据的问题
看你的描述,应该是遍历分组后的Pandas数据acc_grp时,每次生成的result字典都能正常打印,但没法把这些结果正确整合到目标字典里对吧?这大概率是没搞清楚字典的特性——字典的键是唯一的,直接赋值的话后面内容会覆盖前面的,或是没用到合适的容器存储多条记录。
给你两种常见的解决方案,按需选择:
方案1:用列表存储所有结果(适合需要多条记录的场景)
如果你的目标是收集每一行生成的字典,应该初始化一个空列表,每次迭代把result追加进去:
# 初始化空列表用来存所有结果 final_records = [] # 你的模板字典,可根据需求合并到结果中 template_dict = {} # 遍历acc_grp的每一行数据 for idx, row in acc_grp.iterrows(): # 生成当前行的result字典,注意字段映射要和你打印的结果匹配 result = { 'date': str(idx), # 将日期索引转为字符串格式 'credit': row['debit'], # 对应你第一次打印的credit值来自原数据debit列 'balance': row['balance'] + row['credit'] + row['debit'], # 这里是balance的计算逻辑,按需调整 'debit': row['lid'] # 对应你打印的debit值来自原数据lid列 } # 合并模板字典与当前结果(不需要的话可删除此行) result = {**template_dict, **result} # 将当前结果追加到列表中 final_records.append(result) # 现在final_records就是包含所有行数据的字典列表 print(final_records)
方案2:用日期作为键存储到大字典(适合按日期快速查找的场景)
如果想把每条记录按日期作为键存入一个大字典,可参考以下代码:
final_dict = {} template_dict = {} # 你的模板字典 for idx, row in acc_grp.iterrows(): result = { 'credit': row['debit'], 'balance': row['balance'] + row['credit'] + row['debit'], 'debit': row['lid'] } # 合并模板字典与当前结果(不需要的话可删除此行) result = {**template_dict, **result} # 以日期为键,将结果存入大字典 final_dict[str(idx)] = result # 现在final_dict中每个日期对应一条记录 print(final_dict)
关键提醒:
- 字典是键值对结构,不能直接「追加」新记录,必须用列表收集多个字典,或是给每个记录分配唯一键(比如日期)存入大字典。
- 注意字段映射关系,你第一次打印的
result里credit对应原数据debit列、debit对应lid列,balance是计算后的值,一定要确保逻辑匹配,避免数据对应错误。
内容的提问来源于stack exchange,提问作者vbt
相关产品推荐
相关产品推荐

