2013-03-31 49 views
2

我是新來的Python和編程,目前正在研究一個腳本,最終將根據新教速度爲美國地圖上的縣。我遇到了一個讓我目瞪口呆的問題,我似乎無法找到任何答案。我收到:「對象不支持項目分配」當填充字典

此代碼讀取,其中具有以下格式csv文件:

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

當第一項是FIPS碼,以及第二個是速率。我想將它們分配給字典,我可以稍後在字典中使用這些字典在縣地圖中着色。下面的代碼是爲了實現這一點:

#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 [FIPS] =率」,我得到的錯誤:

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 

重命名您的字典或您的文件。

+0

非常感謝解決方案。畢竟是一個相當簡單的錯誤。 – user2230067

+0

非常感謝。我得到這個錯誤,因爲我有一個方法和一個類屬性相同的名稱 – user427969

相關問題