0

我想创建一个基于 csv 第一列的字典作为键。我可以使用 .split() 来执行此操作,还是 csv.dictreader 会自动将键从第一列中取出?

from collections import defaultdict
import csv
import sys

#import csv file and store in dictionary
dict=defaultdict(list)
file=csv.reader(open(‘sys.argv[1]’,‘rt’))
    for f in file:
        a,b,c,d=f.split()
        dict[a].append((b,c,d))
file.close()
4

1 回答 1

3

csv.reader应该已经根据您指定的分隔符拆分您的行。所以是这样的:

csv_file = csv.reader(open(filename, "rb"), delimiter=",")
for row in csv_file:
    print row

会给你这个:

["an element", "another element", "a third element"]
["an element", "another element", "a third element"]
["an element", "another element", "a third element"]
   ....

你不应该这样做row.split()

还有几件事:

1)不要覆盖python内置名称。file是一个内置的python(原样dict)。打电话给你的读者csv_file或其他东西(并重命名你的字典)。

2) 除非您打算defaultdict稍后在脚本中使用这些功能,否则您所需要的只是一个好的老常客dict

3)首先不需要解压f两次的内容。当它只需要一个时,您将其变成一个两步过程:

实施的

myDict = {}
for row in csv_file:
    myDict[row[0]] = row[1:]
于 2012-05-10T01:40:06.253 回答