2012-03-06 98 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而不是[x],該列表僅包含x。您不能附加任何內容來鍵入x,只能列出。要修復,請將dict_card[x["CARD_NUMBER"]] = x更改爲dict_card[x["CARD_NUMBER"]] = [x]。 另外,只是使用

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

這沒有把戲 - 謝謝! – zvxr 2012-03-07 01:47:59