Python - список словарей;доступ к вопросу - PullRequest
0 голосов
/ 07 марта 2012

Использование 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 Ответ

1 голос
/ 07 марта 2012

Это вызвано тем, что вы присваиваете x значение dict вместо [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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...