如何在将Python字典导出为CSV时添加索引列?
解决方案
要给导出的CSV添加索引列,你需要在构造行数据时加入索引字段,同时修正原代码中的拼写错误。以下是两种可行的修改方式:
方式一:逐行构建带索引的行数据
import csv new_dict = {'H1': ['a1', 'a2', 'a3'], 'H2': ['b1', 'b2'], 'H3': ['c1']} csv_rows = [] row_index = 1 # 索引从1开始,若要从0开始则初始化为0 for key, values in new_dict.items(): for addr in values: csv_rows.append({'Index': row_index, 'Key': key, 'Value': addr}) row_index += 1 with open('result.csv', 'w', newline='') as f: # 指定包含索引的表头字段 writer = csv.DictWriter(f, fieldnames=['Index', 'Key', 'Value']) # 修正原代码的拼写错误:writerheader → writeheader writer.writeheader() writer.writerows(csv_rows)
方式二:用列表推导式结合enumerate简化代码
import csv new_dict = {'H1': ['a1', 'a2', 'a3'], 'H2': ['b1', 'b2'], 'H3': ['c1']} # 先扁平化字典的键值对,再用enumerate生成索引 flat_entries = ((key, addr) for key, vals in new_dict.items() for addr in vals) csv_rows = [{'Index': idx, 'Key': key, 'Value': addr} for idx, (key, addr) in enumerate(flat_entries, start=1)] with open('result.csv', 'w', newline='') as f: writer = csv.DictWriter(f, fieldnames=['Index', 'Key', 'Value']) writer.writeheader() writer.writerows(csv_rows)
关键修改说明
- 添加索引字段:在每个行数据字典中加入
Index键,赋值为递增的序号(默认从1开始,符合表格索引的常规习惯,若需从0开始则去掉enumerate的start=1参数)。 - 更新表头字段:修改
DictWriter的fieldnames参数,将Index列为第一个表头。 - 修正拼写错误:原代码中的
writer.writerheader()是错误写法,正确应为writer.writeheader(),否则会触发AttributeError。
内容的提问来源于stack exchange,提问作者Lok
相关产品推荐
相关产品推荐

