我想创建一个基于csv 1st列的字典作为键。我可以使用.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()
答案 0 :(得分: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:]