0

私はPythonが初めてで、次のことをしようとしています:

コンマで区切られた 5 つの異なる値を含む CSV ファイルを開きます。

キーになる辞書にデータを保存したいrow[0]

4 つの行があり、4 つの主キーがあるとします。キーごとに、4 つの新しいキーを持つネストされた別の辞書を作成する必要があります。各キーには、行 1、2、3、4 の値が含まれます。

CSV に次のものが含まれているとします。

1,hi,1,2,3
2,yes,2,3,4
3,no,3,4,5
4,why,4,5,6

そして、私は保存する必要があります:

dict={'1': { 'key2':hi,'key3':1,'key4':2,'key5':3}, '2':{ }, '3':{}, '4':{} }

これは私が使用しているコードです

import csv
dict={}
    reader = csv.reader(open('filename.csv', 'r'))
    for row in reader:
        key=row[0]
        for key in dict:
           dict[key]={}
           dict[key][key2]=row[1]
           dict[key][key3]=row[2]
           dict[key][key4]=row[3]
           dict[key][key5]=row[4]

私は何が欠けていますか?

4

2 に答える 2

2

コードが機能しない理由rowは、空の辞書のキーを繰り返し処理しているためfor key in dict、アクションが実行されないためです。

代わりに、挿入する場合は、次{'key2': row[1], 'key3': row[2], 'key4': row[3], 'key5': row[4]}dict[row[0]]試してください。また、組み込み型にちなんで名付けられた変数、つまりlistset、を使用しないallでくださいdict

import csv
output_dict = {}
with open('filename.csv', 'r') as f:    
    reader = csv.reader(f)
    for row in reader:
      output_dict[row[0]] = {'key%d' % (i + 1): row[i] for i in xrange(1, 5)}
于 2013-10-04T22:12:36.723 に答える