Python - 词典列表;访问问题

时间:2012-03-06 23:56:15

标签: python list dictionary

使用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 个答案:

答案 0 :(得分:1)

造成这种情况的原因是您仅为{d}值指定了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)