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

如何将for循环生成的多个同键字典合并为单个字典以导出CSV

解决方案

核心逻辑说明

你现有代码的问题是每次循环都会生成仅包含单条数据的新字典,使用update方法只会覆盖已有键的值,不会把新数据追加到对应列表中。你需要提前初始化合并字典,每个键对应空列表,循环时把计算得到的每条数据追加到对应列表即可。

修正后的完整代码

# 第一步:提前初始化合并用字典,所有键对应空列表
merged_dict = {
    'Power': [],
    'Length': [],
    'Duration': [],
    'Freq': [],
    'Start Times': []
}

for salaries, match in matching_salaries_non_employees.items():
    # 计算各字段值(注意修正原有变量名大小写不统一的问题)
    power_match = match['Status']['Power'] + ": " + salaries
    length_match = match['Status']['Length'] + ": " + match['Break']['Temp']
    duration_match = f"{match['Status']['duration']}: {match['Break']['duration']}"
    freq_match = f"{match['Status']['freq']}: {match['Break']['freq']}"
    start_times = f"{match['Status']['start time']}: {match['Break']['start time']}"
    
    # 将当前条目的各字段值追加到合并字典对应列表
    merged_dict['Power'].append(power_match)
    merged_dict['Length'].append(length_match)
    merged_dict['Duration'].append(duration_match)
    merged_dict['Freq'].append(freq_match)
    merged_dict['Start Times'].append(start_times)

运行后得到的merged_dict就是你需要的合并后字典,对应你给出的两条示例数据,输出格式为:

{
    'Power': ['high: high', 'med-high: med-high'],
    'Length': ['Long: Short', 'Long: Long'],
    'Duration': ['2.22: 1.01', '1.16: 0.81'],
    'Freq': ['0.081229: 0.079503', '0.0988: 0.565'],
    'Start Times': ['10.10.08: 11.09.16', '17.08.98: 31:01:03']
}

保存为CSV的两种方法

方法1:用pandas实现(代码更简洁)

import pandas as pd

df = pd.DataFrame(merged_dict)
# index=False表示不保存默认行号,utf-8-sig编码避免中文乱码
df.to_csv('匹配结果.csv', index=False, encoding='utf-8-sig')

方法2:用Python内置csv模块实现(无需额外安装依赖)

import csv

with open('匹配结果.csv', 'w', newline='', encoding='utf-8-sig') as f:
    # 指定表头为合并字典的键
    writer = csv.DictWriter(f, fieldnames=merged_dict.keys())
    # 写入表头
    writer.writeheader()
    # 逐行写入数据
    for row in zip(*merged_dict.values()):
        writer.writerow(dict(zip(merged_dict.keys(), row)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:48:04