2012-03-06 96 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