2012-05-10 4 views
0

csvの第1列に基づいて辞書をキーとして作成したいと思います。これを行うには.split()を使うことができますか、またはcsv.dictreaderは自動的に第1列のキーをオフにしますか?csv.readerで.split()を使用できますか?

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)あなたは、あなたが必要とするすべては、古き良き定期dict

3で、defaultdict機能後のスクリプトで使用する予定のない限り)最初の場所で二回fの内容を解凍する必要はありません。それは一つだけを必要とするときは、2段階のプロセスにこれを作っている:「列」であなたは「行」を意味する場合

は、dictreaderはすでにそれを行うことができます

myDict = {} 
for row in csv_file: 
    myDict[row[0]] = row[1:] 
関連する問題