2013-03-31 2 views
2

Я новичок в Python и программировании, и в настоящее время я работаю над скриптом, который в конечном итоге будет окрашивать графства на карте США в соответствии со скоростью протестантизма. Я столкнулся с проблемой, которая оставила меня ошеломленным, и я не могу найти ответы.Я получаю: «объект не поддерживает назначение элемента» при заполнении словаря

Этот код читает в CSV-файл, который имеет следующий формат:

2060;6,018888889 
2068;169,77 
etc... 

Если первый элемент кода ФИПС, а второй является скорость. Я хочу назначить их для словаря, который впоследствии можно использовать для цветной печати на карте округов. Следующий код предназначен для достижения только что:

#populate dictionary with fips and rate from csv file 
evanrate = {} 

with open(r'C:\Users\Jeroen\documents\hacker1\evanrate.csv') as evanrate: 
     parsereader = csv.reader(evanrate, delimiter = ';') 
    for row in parsereader: 
     fips = row[0] 
     rate = float(row[1].replace(',', '.')) 

     evanrate[fips] = rate 

Однако, когда я пытаюсь заполнить словарь, используя код «evanrate [ФИПС] = скорость», я получаю ошибку:

Traceback (most recent call last): 
    File "C:\Users\Jeroen\Documents\hacker1\evanrate.py", line 16, in <module> 
    evanrate['fips'] = rate 
    TypeError: '_io.TextIOWrapper' object does not support item assignment 

Я использую Python 3.3 и Windows 7.

ответ

8
# this is a dict 
# ↓ 
evanrate = {}            # this isn't --. 
                  #  ↓   | 
with open(r'C:\Users\Jeroen\documents\hacker1\evanrate.csv') as evanrate: # | 
     parsereader = csv.reader(evanrate, delimiter = ';')    # | 
    for row in parsereader:            # | 
     fips = row[0]              # | 
     rate = float(row[1].replace(',', '.'))        #/
     # ↓---------------------------------------------------------------/ 
     evanrate[fips] = rate 

Переименовать или ваш Dict или файл.

+0

Большое спасибо за решение. В конце концов, это была простая ошибка. – user2230067

+0

Большое спасибо. Я получал эту ошибку, потому что у меня было такое же имя для метода и атрибута класса – user427969