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

Python不使用pandas 基于CSV首列生成多个分类字典

解决方案

原代码的问题在于两层循环都迭代同一个csv.reader迭代器,迭代器遍历一次就会耗尽,同时没有对第一列的分类做判断,所以最终得到合并的字典。以下是仅使用Python标准库的实现代码:

import csv

# 初始化分类存储容器
category_maps = {}

# 用with上下文管理器操作文件,避免资源泄漏
with open(r'c:\sample.csv', newline='', encoding='utf8') as f:
    reader = csv.reader(f)
    for row in reader:
        # 跳过格式异常的行
        if not row or len(row) < 3:
            continue
        cate, key, value = row[0], row[1], row[2]
        # 分类不存在时先初始化空字典
        if cate not in category_maps:
            category_maps[cate] = {}
        category_maps[cate][key] = value

# 按你需要的格式生成对应变量
dictlanguage = [category_maps.get('language', {})]
dictgender = [category_maps.get('gender', {})]

# 输出验证
print(dictlanguage)
print(dictgender)

如果分类数量多,不想手动定义每个变量,可以用以下代码动态生成全局变量:

for cate_name, map_data in category_maps.items():
    globals()[f'dict{cate_name}'] = [map_data]

注:如果你期望的dictlanguage确实要过滤掉1:english1这条数据,只需要在循环里加一行判断if cate == 'language' and key == '1': continue即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:54:07