2012-03-06 5 views
0

파이썬을 사용하여 탭으로 구분 된 파일을 분석하려고합니다. 여기 사전의 목록으로 파일 가져 오기를 엽니 다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' 

나는 문제가 내 오류의 위치를 ​​데 이미 추가 된 경우, 그냥있는 행을 추가합니다. 파이썬에 익숙하지 않기 때문에 list_of_dicts에 액세스하는 방식이 올바른지 확실하지 않습니다.

답변

1

x만을 포함하는 목록 인 [x] 대신 dict 값에 x을 지정했기 때문에 발생했습니다. 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