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

如何在Python中以CSV前两列为键、第三列为值创建字典?

解决方案:从三列CSV创建双键字典

我明白你想要实现的是把CSV里的前两列组合成元组作为字典的键,第三列对应为值。你用pandas的思路是对的,但可能是细节没处理好(比如分隔符或者后续转换步骤),下面给你两种可行的方法:

方法一:使用Pandas(推荐,适合大型CSV)

你之前的问题大概率是没有指定正确的分隔符(你的示例CSV是空格分隔,而pandas默认用逗号分隔),或者没有明确提取第三列来转换字典。试试下面的代码:

import pandas as pd

# 读取空格分隔的CSV,sep='\s+'表示匹配任意数量的空格/制表符
df = pd.read_csv("example.csv", sep='\s+')

# 将前两列设置为复合索引,然后提取第三列转为字典
result_dict = df.set_index(['Column-1', 'Column-2'])['Column-3'].to_dict()

print(result_dict)
# 输出: {(1, 'A'): 'foo', (2, 'B'): 'bar'}

关键说明:

  • sep='\s+':针对你的空格分隔CSV,如果是标准逗号分隔的CSV,可以去掉这个参数,pandas会自动识别。
  • set_index(['Column-1', 'Column-2']):把两列设置为复合索引,也就是元组形式的键。
  • ['Column-3'].to_dict():明确指定要转换为值的列,避免得到嵌套的字典结构。

方法二:原生Python实现(无需依赖库)

如果你的CSV数据量不大,也可以直接用Python内置的文件操作来实现,更轻量:

result_dict = {}

with open("example.csv", 'r', encoding='utf-8') as file:
    # 跳过第一行表头
    next(file)
    for line in file:
        # 去除换行符,按任意空格分割行内容
        col1, col2, col3 = line.strip().split()
        # 注意把第一列转为整数(和示例输出一致)
        result_dict[(int(col1), col2)] = col3

print(result_dict)
# 输出: {(1, 'A'): 'foo', (2, 'B'): 'bar'}

适配逗号分隔CSV的修改:

如果你的CSV是逗号分隔(比如Column-1,Column-2,Column-3),只需要把split()改成split(','),再给每个元素加strip()处理可能的空格:

col1, col2, col3 = [item.strip() for item in line.strip().split(',')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:17:25