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

Python中实现列表数据映射:将CSV数据按名称分组关联

实现方法

没问题,这有几种实用的方法帮你把数据整理成想要的字典格式,不管是从已有的L1/L2转换,还是直接通过DictReader处理CSV文件都可以:

方法1:基础循环(适合理解逻辑)

如果已经有了L1和L2两个列表,可以用最直观的循环来构建字典:

# 初始化空字典
result = {}

# 遍历配对的名称和数据
for name, data in zip(L1, L2):
    # 如果名称不在字典里,先创建空列表
    if name not in result:
        result[name] = []
    # 将对应数据添加到列表中
    result[name].append(data)

这种写法逻辑清晰,新手也能快速理解每一步的作用,最终会生成你需要的{'Name1':['abcd','efgh','fgdh'], 'Name2':['xjbjk','flfnd']}格式。

方法2:用collections.defaultdict(更简洁)

Python的collections模块提供了defaultdict,可以自动为不存在的键创建默认值(这里是空列表),省去手动判断键是否存在的步骤:

from collections import defaultdict

result = defaultdict(list)

for name, data in zip(L1, L2):
    # 直接添加数据,无需手动初始化列表
    result[name].append(data)

# (可选)如果需要转换成普通字典
result = dict(result)

这种写法更简洁,代码量更少,处理效率也更优,适合日常快速开发。

方法3:直接从DictReader处理(推荐,节省内存)

既然你是用csv.DictReader读取CSV文件,其实可以跳过生成L1和L2的步骤,直接在读取过程中构建目标字典,这样能避免额外存储两个列表,尤其适合处理大文件:

import csv
from collections import defaultdict

result = defaultdict(list)

# 打开CSV文件并读取
with open('your_file.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 提取每行的名称和数据字段
        name = row['NAMES']
        data = row['DATA']
        result[name].append(data)

# (可选)转换成普通字典
result = dict(result)

这种方法更符合实际工作流程,一步到位完成数据读取和格式转换,还能节省内存空间。

以上三种方法最终都会生成你需要的可迭代字典格式,你可以根据自己的场景选择合适的方式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:02:53