如何将指定嵌套字典按要求格式写入CSV文件
没问题,我来帮你搞定这个嵌套字典转CSV的需求。按照你要的格式,每个子键(a/b/c/d)占一行,对应三个父分类下的值,我们可以用Python的csv模块来实现,步骤和代码如下:
实现思路
- 确定CSV结构:表头包含子键名称+三个父分类的键(
lt60、ge60le90、gt90),这样表格逻辑更清晰; - 处理子键一致性:注意你的字典里
ge60le90下的键是C(大写),其他父类是c(小写),我会默认统一转成小写处理(如果想保留原样可以调整代码); - 遍历提取值:对每个子键,依次从三个父字典中取出对应值,不存在则默认补0;
- 写入文件:用Python内置的
csv模块规范写入CSV,避免手动拼接字符串的格式问题。
代码示例
import csv # 你的原始嵌套字典 count = { 'lt60': {'a': 0, 'b': 0, 'c': 0, 'd': 0}, 'ge60le90': {'a': 4, 'b': 0, 'C': 0, 'd': 0}, 'gt90': {'a': 0, 'b': 1, 'c': 2, 'd': 1} } # 提取所有父分类的键 parent_categories = list(count.keys()) # 收集所有子键并统一为小写(解决大小写不一致问题) child_keys = set() for parent_dict in count.values(): child_keys.update(k.lower() for k in parent_dict.keys()) # 排序让输出更整齐 child_keys = sorted(child_keys) # 写入CSV文件 with open('result.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.writer(csv_file) # 写入表头行 writer.writerow(['子键'] + parent_categories) # 遍历每个子键,生成对应行数据 for key in child_keys: row_data = [key] for category in parent_categories: # 优先匹配小写键,找不到再试大写,都没有就用0 value = count[category].get(key, count[category].get(key.upper(), 0)) row_data.append(value) writer.writerow(row_data)
输出效果
运行代码后生成的result.csv内容如下:
子键,lt60,ge60le90,gt90 a,0,4,0 b,0,0,1 c,0,0,2 d,0,0,1
如果不想统一子键大小写(比如保留C作为单独行),可以修改子键收集的代码:
# 不统一大小写的版本,保留原始键 child_keys = set() for parent_dict in count.values(): child_keys.update(parent_dict.keys()) child_keys = sorted(child_keys)
这样输出会包含C和c两行,对应各自的取值。
内容的提问来源于stack exchange,提问作者viscabar
相关产品推荐
相关产品推荐

