在python中,如何将CSV文件的列写入字典?

时间:2013-11-30 06:29:33

标签: python csv nameerror

我正在尝试获取给定的csv文件并将第一列定义为键,而每个键引用一个包含2个值的数组,其中一个值在第二列中,另一个值在第三列中。最后,不能将列切换成行,反之亦然,看看我在每个csv中有多少行,我必须使用它。当我在线查看时,我能找到的唯一帮助是使用行的语法,有没有办法处理列?

以下是我尝试的代码:

import csv
reader = csv.reader(open('test.csv'))

result = {}
for row in reader:
    key = column0
    if key in result:
        pass
    result[key] = column1 and column2

print result

我正在测试的csv(test.csv):

g1_and_g2, 0.04286547, -1.45
g2_and_g2, 0.12348197, 3.00
g3_and_g4, 0.03125879, 1.89

当我在终端中运行程序时,我收到错误:

NameError: name 'g1_and_g2' is not defined

我对编程很陌生,所以对任何帮助都表示赞赏。谢谢!

编辑以添加更多信息: 预期的输出应该只是一个字典,如:

g1_and_g2: 0.04286547,-1.45
g2_and_g2: 0.12348197, 3.00
g3_and_g4: 0.03125879, 1.89

基本上,第一列中的字符串应该是键,而后两列中的整数应该是与该行中的键相关联的值。

另外,我正在运行python 2.7

1 个答案:

答案 0 :(得分:4)

通过阅读您的描述,我了解您的目标是打开一个csv文件,其中每行的第一项是列标题/键,后续项是与该键对应的行中的单元格的值。然后你想将这一切加载到字典中?

如果该规范是正确的,这应该像您正在寻找的那样。

import csv
with open('test.csv', "r") as f:
    reader = csv.reader(f)
    result = {}

    for row in reader:
        key = row[0]
        result[key] = row[1:]

    print(result)