2012-03-06 17 views
0

Pythonの使用私はタブで区切られたファイルを分析しようとしています。このファイルの特定の列のためにPython - 辞書のリスト。アクセスの問題

import csv 
fileIN = open('transaction_tmp', "r") 
list_of_dicts = list(csv.DictReader(fileIN, dialect='excel-tab')) 

私は数える(と行を注意してください)する必要があります。私はここで辞書のリストとしてファイルやインポートを開きます。 (

dict_card = {} 

そして今、私は、辞書のリストを反復処理しようとしています、そして値が指摘されていない場合、私は(キーとして)それを注意して、見つかった行を設定した値のため:私は空の辞書を作成します辞書のリストで)。このコードの最後のビットは私にエラーを与えている

for x in list_of_dicts: 
    if dict_card.has_key(x["CARD_NUMBER"]): 
     dict_card[x["CARD_NUMBER"]].append(x) 
    else: 
     dict_card[x["CARD_NUMBER"]] = x 

Traceback (most recent call last): 
    File "<stdin>", line 3, in ? 
AttributeError: 'dict' object has no attribute 'append' 

私はトラブル私の誤りを見つけるを持っています、それはすでに追加されている場合、私はちょうど見つけた行を追加します。 Pythonの初心者であるため、私がlist_of_dictsにアクセスする方法が正しいかどうかは完全にはわかりません。

答えて

1

ではなく、xのリストのみをdict値に割り当てるためです。 xに何かを追加することはできません。リストのみを入力してください。修正するには、dict_card[x["CARD_NUMBER"]] = xdict_card[x["CARD_NUMBER"]] = [x]に変更してください。

for x in list_of_dicts: 
    dict_card.setdefault(x['CARD_NUMBER'], []).append(x) 
+0

これはトリック感謝でした! – zvxr