我得到:填充字典时"对象不支持项目分配"

use*_*067 2 python csv dictionary variable-assignment

我是Python和编程的新手,我目前正在编写一个脚本,最终将根据新教率在美国地图中为县设置颜色.我遇到了让我傻眼的问题,我似乎无法找到任何答案.

此代码读入csv文件,该文件具有以下格式:

2060;6,018888889
2068;169,77
etc...
Run Code Online (Sandbox Code Playgroud)

第一项是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
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用代码"evanrate [fips] = rate"填写字典时,我收到错误:

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
Run Code Online (Sandbox Code Playgroud)

我使用的是Python 3.3和Windows 7.

Pav*_*sov 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
Run Code Online (Sandbox Code Playgroud)

重命名您的词典或文件.