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

如何生成指定格式的列表?Python字典转列表格式调整求助

解决字典列表结构化转换问题

修正后的代码

payment_no = []
for i in df2:
    current_payment_num = df2[i]['Payment_Number']
    # 构建Line列表,移除每个发票字典中的Payment_Number键
    line_list = []
    for k in df3:
        if df3[k]['Payment_Number'] == current_payment_num:
            # 复制字典并删除不需要的键
            invoice_dict = df3[k].copy()
            del invoice_dict['Payment_Number']
            line_list.append(invoice_dict)
    # 构建符合要求的结构化字典并加入列表
    payment_no.append({
        'Payment_Number': current_payment_num,
        'Line': line_list
    })
print(payment_no)

关键修改点

  • 替换扁平追加为结构化字典:原代码每次循环向payment_no追加字符串和列表,改为直接构建包含Payment_Number和Line的字典,确保每个元素都是符合要求的结构化对象。
  • 移除发票字典中的冗余键:通过字典复制并删除Payment_Number键,让Line列表中的发票信息只保留需要的字段。
  • 简化变量引用:提取当前支付编号到变量current_payment_num,避免重复调用df2[i]['Payment_Number'],提升代码可读性。

优化建议(可选)

如果df3数据量较大,嵌套循环效率较低,可以先通过字典对df3按Payment_Number分组,减少循环次数:

# 先对df3按Payment_Number分组
from collections import defaultdict
payment_invoice_map = defaultdict(list)
for k in df3:
    invoice_dict = df3[k].copy()
    del invoice_dict['Payment_Number']
    payment_invoice_map[df3[k]['Payment_Number']].append(invoice_dict)

# 再生成结果列表
payment_no = []
for i in df2:
    payment_num = df2[i]['Payment_Number']
    payment_no.append({
        'Payment_Number': payment_num,
        'Line': payment_invoice_map.get(payment_num, [])
    })

内容的提问来源于stack exchange,提问作者hazeeb hashim siddique

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:40:28