纯Python实现嵌套字典转置并按指定格式输出CSV
纯Python解决方案
直接用基础字典操作和字符串拼接就能实现,代码如下:
data_dict = {1: {'One': 110, 'Two': 210, 'three': 310}, 2: {'One': 120, 'Two': 220, 'three': 320}, 3: {'One': 130, 'Two': 230, 'three': 330}} # 处理CSV表头行:第一列为空,后续是排序后的外层字典键 columns = sorted(data_dict.keys()) header = [''] + [str(col) for col in columns] csv_lines = [','.join(header)] # 处理行标题:统一首字母大写,按One/Two/Three的顺序排列 row_keys = [key.capitalize() for key in data_dict[1].keys()] row_keys_sorted = sorted(row_keys, key=lambda x: ['One', 'Two', 'Three'].index(x)) # 遍历行标题,收集对应列的值并拼接成行 for row_key in row_keys_sorted: # 匹配原字典中的对应键(兼容原字典里的小写three) original_key = next(k for k in data_dict[1].keys() if k.capitalize() == row_key) values = [str(data_dict[col][original_key]) for col in columns] csv_line = ','.join([row_key] + values) csv_lines.append(csv_line) # 输出最终CSV内容 print('\n'.join(csv_lines))
代码说明
- 表头处理:提取外层字典的键并排序,加上开头的空字符串组成表头行
- 行标题处理:将子字典的键统一为首字母大写格式,并按示例要求的固定顺序排列
- 数据行生成:遍历每个行标题,匹配原字典中的对应键,依次取出各列的值并拼接成CSV行
- 最终将所有行用换行符连接,即可得到目标格式的CSV内容
运行后输出:
'',1,2,3 One,110,120,130 Two,210,220,230 Three,310,320,330
内容的提问来源于stack exchange,提问作者Roman Toasov
相关产品推荐
相关产品推荐

