0

csv の 1 列目をキーとして辞書を作成したいと考えています。.split() を使用してこれを行うことはできますか、それとも csv.dictreader は自動的に 1 列目のキーをベースにしますか?

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 の組み込み名を上書きしないでください。filepythonビルトインです(そのままdict)。リーダーcsv_fileか何かを呼び出します (辞書の名前も変更します)。

2)スクリプトの後半で機能を使用する予定がない限りdefaultdict、必要なのは古き良き通常のdict

3) そもそも二度中身を解凍する必要はありませんf。必要なプロセスが 1 つだけの場合、これを 2 ステップのプロセスにします。

実装された

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