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

如何利用CSV文件创建以列名为键的嵌套字典?

从CSV文件生成以列名为键的字典结构

如果你想把CSV文件的每一行转换成以列名为键的字典,并整合到一个列表(或嵌套字典)中,用Python标准库的csv模块就能轻松实现,以下是两种常见场景的解决方案:

场景1:生成字典列表(匹配你的示例格式)

这种方式会把CSV的每一行转为一个字典,所有字典存放在一个列表里,和你给出的示例结构完全一致:

import csv

def csv_to_dict_list(csv_file_path):
    dict_list = []
    # 打开CSV文件,指定编码(根据你的文件实际编码调整,比如gbk)
    with open(csv_file_path, mode='r', encoding='utf-8') as f:
        # DictReader自动将第一行表头作为字典的键
        reader = csv.DictReader(f)
        # 遍历每一行,转成字典后加入列表
        for row in reader:
            dict_list.append(dict(row))
    return dict_list

# 调用示例,替换成你的CSV文件路径
output = csv_to_dict_list("your_data.csv")
print(output)

运行后输出会是类似这样的结构:

[
    {'name':'john' , 'sname':'doe' , 'address':'120 Jefferson st'},
    {'name':'jack' , 'sname':'McGinnis', 'address':'202 hobo'}
]

场景2:生成嵌套字典(外层用唯一值做键)

如果你需要一个外层字典,用CSV中某列的唯一值(比如name)作为键,对应的值是该行的字典,可以用这个方法:

import csv

def csv_to_nested_dict(csv_file_path, key_col='name'):
    nested_dict = {}
    with open(csv_file_path, mode='r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            # 用指定列的值作为外层字典的键
            nested_dict[row[key_col]] = dict(row)
    return nested_dict

# 调用示例
output = csv_to_nested_dict("your_data.csv")
print(output)

输出结构示例:

{
    'john': {'name':'john' , 'sname':'doe' , 'address':'120 Jefferson st'},
    'jack': {'name':'jack' , 'sname':'McGinnis', 'address':'202 hobo'}
}

注意事项

  • 确保CSV文件的第一行是列名(表头),DictReader会自动读取这一行作为字典的键
  • 如果CSV文件编码不是UTF-8,修改encoding参数为对应编码(比如gbk、utf-16)
  • 如果遇到空行或格式错误的行,可以添加异常处理逻辑跳过或报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:31:10